自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 物联网设备TCP通信中线程使用的一些技巧(1)

GCDAsyncSocketDelegateCocoaAsyncSocket是一个非常强大的异步通信库,使用非常简单,物联网的应用都需要使用到这个库。dispatch_queue_t queue = dispatch_queue_create("netQueue", DISPATCH_QUEUE_SERIAL);if (!_mySocket) { _mySocket = [[GCDAs...

2019-04-15 10:06:33 416

原创 KVC、KVO以及与NSNotification的区别和用法(1)

KVCKVC定义KVC(Key-value coding)键值编码,就是指iOS的开发中,可以允许开发者通过Key名直接访问对象的属性,或者给对象的属性赋值。而不需要调用明确的存取方法。这样就可以在运行时动态地访问和修改对象的属性。而不是在编译时确定,这也是iOS开发中的黑魔法之一。很多高级的iOS开发技巧都是基于KVC实现的。一个对象拥有某些属性。比如说,一个 Person 对象有一个...

2019-04-07 17:58:05 175

原创 Objective-C中C语言使用初步学习(2)

最近在进行iOS的深入学习,看过一些博客后意识到自己的代码写的过于臃肿。我从开始学习到现在的业务熟练都是使用的最基本的MVC模式,于是MVC中的C--controller代码十分臃肿,让接手代码的人无从下手。在网上查阅多篇博客后,才了解到有多种设计模式,虽然各有缺点,但是能让我借鉴到许多方法;然后还找到很多模块,比如YYKit等,可以优化、简化复杂的代码模块和逻辑。现在我就在学习YYKit,发...

2019-03-18 09:16:55 180

原创 iOS——Runtime学习(1)

iOS——Runtime学习(1)动态语言和静态语言了解Runtime,首先要知道动态语言和静态语言的区别:静态类型语言,是指数据类型的检查以及函数的调用是在运行前(如编译阶段)做的。如C语言,编译阶段就要决定调用哪个函数,如果函数未实现就会编译报错。动态类型语言,是指数据类型的检查和函数的调用是在运行时做的。运行时新的函数可以被引进,已有的函数可以被删除。OC就是一门动态语言,...

2019-03-11 09:09:50 134

原创 iOS——App内进行Wi-Fi连接

最近开发遇到的问题,物联网设备开发,需要将设备连接入网,使用的乐鑫的模组。乐鑫的模组有两种入网模式:AirLink、softAp。airlink是利用路由器进行广播信息,将Wi-Fi的ssid以及密码发送给设备,设备连接入网。但是这种入网方式是很古老的方法了,当时并未考虑到路由器的5G频段,而现在的路由器基本都是双频混合的,iphone在连接路由器时会自动选择最好的频段连接,也就是5G频段,这就导...

2019-01-21 09:38:31 2612 2

原创 VC中多个定时器同时使用的选择

做App肯定会碰到在一个VC中同时使用两个甚至多个定时器,这时候对定时器的选择就要慎重。NSTimer的冲突如果在一个类中同时使用两个NSTimer,调用不同selector,运行后就会出现冲突,定时器的重复时刻可能会错误调用另一个定时器所调用的selector,这就与NSTimer所加入的runloop有关系,需要把NSTimer创建不同的子Runloop中才能避免冲突。dispat...

2018-12-22 10:50:22 1400

原创 iOS设置UIButton图片在上文字在下

iOS设置UIButton图片在上文字在下写app的UI时总会碰到一个按钮下方还会有文字提示,以往我的做法都是UIButton设置为图片,在下方再添加一个UILabel,后来发现有一个更简单的方法,直接设置UIButton的图片加文字,并调整位置。代码如下UIButton *myButton = [[UIButton alloc] init];myButton.titleLabel....

2018-12-09 19:04:18 5798 1

原创 UIButton无法点击的问题

其实不光是UIButton,很多控件都会碰到点击无效的问题,原因有很多,下面提一下我碰到过的问题。1、父View无法点击当把控件加入到一个UIView中,而这个view无法控制时,也即userInteractionEnabled = NO,那么其中的所有子控件都无效,此时必须将view.userInteractionEnabled设置为YES。2、父View的Frame设置不正确当...

2018-11-15 18:05:07 1036

原创 对属性的深入理解

真正开发iOS刚好满一年,这一年的过程就是囫囵吞枣般学习新知识,翻找博客,把一些功能塞到程序中。虽说项目完成了好几个,但是基础还是相当薄弱。现在去看一些iOS的基础博客立即恍然大悟,对开发中碰到的一些难以理解的报错有了深刻的理解。下面开始正题:1.初用从我学iOS开始,编写一个控件、一个字符串或是一个数组都是如下形式:@property (strong, nonatomic) UI...

2018-11-10 11:37:00 155

原创 获取验证码按钮以及点击后重复倒计时

UIButton样式UIButton放在UITextField右边,这边就不放TF代码了,直接放UIButton样式代码,都是简单的写法。 UIButton *verifyBtn = [UIButton buttonWithType:UIButtonTypeCustom]; [verifyBtn setTitle:LocalString(@"...

2018-11-04 20:20:19 513

原创 iOS-Charts的x轴坐标间隔与坐标个数修改

项目需要用到数据曲线,而且曲线是实时变化的,所以选择了第三方图表库Charts。选择Charts的最主要原因还是它是作者按照Android的常用曲线库MPAndroidChart写的,功能UI基本相近。曲线的基本用法很简单,在GitHub上可以下载到demo,有各种示例,K线图、折线图和饼状图等都有。以下主要讲我自己碰到的特定问题和解决方案。 自定义的坐标文字和间隔 项目曲线是根据时...

2018-10-27 17:38:52 8753 4

原创 iOS模态弹出出现的一些问题

1.简单介绍iOS的两种弹出方式present和push,都会引起当前VC的viewWillDisappear生命周期,并呈现present或push的VC。而使用modal呈现VC时,效果就是新控制器从下往上出现,并覆盖当前控制器,且并不会触发当前控制器的viewWillDisappear生命周期。2.简单使用 SearchCurveController *searchVC ...

2018-10-19 11:02:04 3664 1

原创 UISlider——渐变色滑动条

渐变色的滑动条效果网上实现方案有很多,方法都大同小异,就是用颜色组生成新的Image插入到UISlider中。生成image的方法如下所示:-(UIImage *)getGradientImageWithColors:(NSArray*)colors imgSize:(CGSize)imgSize{ NSMutableArray *arRef = [NSMutableArray...

2018-09-11 16:51:09 3846

原创 使用performSelector设计最简单的重发机制

重发机制在对网络进行http请求或者物联网产业中对网关进行不断的发送数据帧时,重发机制是一个必须存在的功能,来保证用户操作的可靠性,app会不断的重复发送,直到数据成功发送,并且接受到回复帧。performSelectorperformSelector: withObject:是在iOS中的一种方法调用方式。他可以向一个对象传递任何消息,而不需要在编译的时候声明这些方法。而重发机制...

2018-09-06 09:32:40 400

原创 UITableview右侧索引以及按名字排序

UITableview右侧索引右侧索引功能是iOS很常见的功能,在通讯录就得到了完美应用,在说这个功能之前,我们首先了解一个按首字母或者汉字拼音首字母分组排序索引的类。它能够根据地区来生成与之对应区域索引标题。不需要直接创建它的对象,我们可以通过 UILocalizedIndexedCollation +currentCollation 获得一个对应当前地区的单例对象。UILocalize...

2018-08-23 18:24:59 1158

原创 仿UIAlertController,制作一个自定义的alert

先放一个效果图:直接放代码#import <UIKit/UIKit.h>typedef void(^leftBlock)(void);typedef void(^rightBlock)(void);@interface YAlertViewController : UIViewController@property (nonatomic) leftBlock...

2018-08-14 18:18:28 1448

转载 dispatch_semaphore_t的使用

1. dispatch_semaphore_create => 创建一个信号量的初始值传入的参数为long,输出一个dispatch_semaphore_t类型且值为value的信号量。值得注意的是,这里的传入的参数value必须大于或等于0,否则dispatch_semaphore_create会返回NULL。     2. dispatch_semaphore_signal =&...

2018-08-09 18:26:37 1518

原创 FMDB中FMDatabaseQueue简单使用笔记及错误整理

FMDB是什么项目需要数据本地缓存,所以想到了使用本地数据库。iOS的本地数据库就是SQLite,而FMDB就是一个Objective-C编写的SQLite封装库。FMDB的导入及使用1.FMDB地址:Github地址2.使用Cocoapods导入,只需要在Podfile中添加pod 'FMDB',然后pod installFMDatabaseQueue数据库创建NS...

2018-08-01 10:04:32 1566

原创 CocoaPods导入的库引用时无法找到文件解决方法

1.选择工程target,Build Settings,搜索Search Paths,如图所示:2.如果找不到Search Paths,在搜索框左边选择ALL选项。3.点击Search Paths中User Header Search Paths,添加$(PODS_ROOT),并选择recursive选项。4.如果修改后编译报错,可能是其他的库重复编译,所以添加$(PODS_ROO...

2018-07-24 09:30:43 5404

原创 iOS - 使用Image.xcassets设置LaunchImage可能出现在问题

问题1:ERROR ITMS-90096   使用Image.xcassets会出现这个问题,可能是以下几个原因:1.图片必须是PNG格式2.添加一张Default-568.png的图片到工程目录下,并且像素值必须为320*568这就需要问UI要图片了,我最终还是选择了使用LaunchScreen.storyboard,直接解决问题。问题2:修改了LaunchImage但是怎么...

2018-07-21 15:09:51 668

原创 navigationVar的translucent属性导致的viewFrame问题

问题:    在使用navigationController时,我们创建控件并添加到self.view中会发现空间的Frame时从(0,0)开始。而我们要让控件正常显示,就要在y坐标上加64。原因:    这个问题时由navigationBar的translucent属性造成的,当这个属性设置为YES时,self.view的Frame从(0,0)开始,而设置为NO时,则从(0,64)开...

2018-07-20 14:57:16 260

原创 iOS------GCDAsyncUdpSocket的使用

    iOS开发一般都使用第三方库CocoaAsyncSocket.    使用CocoaPods安装,在Podfile中添加下行: pod 'CocoaAsyncSocket'     引入udpSocket#import "GCDAsyncUdpSocket.h"   创建udpSocket_udpSocket = [[GCDAsyncUdpSocket ...

2018-07-20 14:56:56 2712

原创 强制横屏以后控件布局问题

页面强制横屏强制某个页面进入就是横屏状态其实只要两个简单的操作就完成了。 首先进入targets页面,点击General栏,在DeploymentInfo中只勾选Portrait选项,如图所示:然后在需要横屏的VC中添加以下代码:#pragma mark - 设置横屏- (BOOL)shouldAutorotate{ return YES;}- (UIInte...

2018-07-19 11:21:34 1188

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除