iOS开发
文章平均质量分 52
LinXunFeng
LXF‘s Blog:http://linxunfeng.top/
展开
-
iOS键盘的弹出与关闭总结
弹出[self.btn becomeFirstResponder]; // 成为第一响应者 关闭[self.btn resignFirstResponder]; // 辞去第一响应者[self.view endEditing:YES]; // 结束编辑原创 2016-03-02 22:22:45 · 968 阅读 · 0 评论 -
iOS数据存储方式
1.plist数据存储2.偏好设置(实质也是plist存储)3.归档普通对象4.SQLite5.Core Data6.网络原创 2016-03-02 23:13:53 · 389 阅读 · 0 评论 -
Xcode7 使用NSURLSession发送HTTP请求的问题
Application Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file.https://developer.appl原创 2016-03-29 17:46:49 · 414 阅读 · 0 评论 -
多线程&网络总结
多线程NSThreadGCD 队列 并发队列 全局队列自己创建串行队列 自己创建主队列任务:block函数 sync:同步函数async:异步函数单例模式NSOperationRunLoop 同一时间只能选择一个模式运行常用模式 Default:默认Tracking:拖拽UIScrollView网络HTTP请求GET请求// URLNSString *转载 2016-04-07 17:08:51 · 500 阅读 · 0 评论 -
GCD
加锁@synchronized(self){执行内容}术语同步和异步主要影响:能不能开启新的线程同步:只是在当前线程中执行任务,不具备开启新线程的能力异步:可以在新的线程中执行任务,具备开启新线程的能力 并发和串行主要影响:任务的执行方式并发:允许多个任务并发(同时)执行串行:一个任务执行完毕后,再执行下一个任务 基本使用各种任务与队列组合原创 2016-03-26 19:03:47 · 571 阅读 · 0 评论 -
iOS小技巧 - 图片无损拉伸的三个方法
直接上代码: UIImage *normal = [UIImageimageNamed:@"xxx"]; // iOS5之前的办法 左边和上边分别有多少需要保护(一般为宽高的一半) normal = [normal stretchableImageWithLeftCapWidth:normal.size.width * 0.5topCapHeight:normal.size.hei原创 2016-04-15 20:05:21 · 1011 阅读 · 0 评论 -
iOS小技巧 - 利用GCD创建更加准确的定时器
NSTimer创建的定时器不是很准确,我们可以用GCD来创建一个准确的定时器顺便提示一点:GCD不受RunLoop的影响(比如:scrollView在拖动的时候,定时器照样执行)@interface ViewController ()/** * 定时器(这里不用带*,因为dispatch_source_t就是个类,内部已经包含了*) */@property(nonat原创 2016-04-15 19:48:57 · 1551 阅读 · 0 评论 -
iOS小技巧 - ARC与非ARC的混合开发
当项目中引入的库版本比较旧,所须环境为非ARC,而当前项目的环境为ARC时,可以设置,使项目进行ARC与非ARC的混合开发。原理:告诉编译器目标文件是非ARC的文件,按非ARC的方式去编译项目 -> Build Phases -> 找到需要非ARC环境的目标文件,在Compiler Flags一栏里双击加入以下代码-fno-objc-arc-fno-objc-arc原创 2016-04-15 19:41:01 · 457 阅读 · 0 评论 -
iOS小技巧 - 选择编译
有些新版本的xcode的代码在旧版本的xcode中是没有的,所以需要选择编译先引入头文件 #import 示例代码如下(通过判断__IPHONE_7_0从而间接得知xcode版本的新旧程度)if (iOS7) {#ifdef __IPHONE_7_0 titleW = [self.currentTitleboundingRectWithSize:CGSizeMak原创 2016-04-15 20:14:31 · 354 阅读 · 0 评论 -
iOS小技巧 - 调换按钮中文字与图标的位置(自定义button,重写两个方法)
自定义控件必须实现initWithCoder、initWithFrame、setup这三个方法,规范!新建继承于UIButton的类文件 LXFTitleButtonLXFTitleButton.m/** * 从文件中解析一个对象的时候就会调用这个方法(如button从xib或storyboard中解析出来) * 该方法比下面的方法先被调用 */-(id)i原创 2016-04-15 20:18:45 · 1593 阅读 · 0 评论 -
iOS小技巧 - 获取文字的宽度(iOS6与iOS7的方法不同)
获取文字的宽度(iOS6与iOS7的方法不同)NSString *str = @"lincsdnnet";CGFloat titleW;NSDictionary *attrs = @{NSFontAttributeName : [UIFontsystemFontOfSize:14]};if ( [[UIDevice currentDevice].systemVersion do原创 2016-04-15 20:26:57 · 642 阅读 · 0 评论 -
iOS小技巧 - 获取指定文件夹下的所有相对路径(包括子文件夹路径),并实现指定文件夹下的所有文件的全部移动
获取指定文件夹下的所有相对路径(包括子文件夹路径)NSFileManager *mgr = [NSFileManagerdefaultManager];NSArray *subpaths = [mgr subpathsAtPath:@"/Users/lxf/Desktop/test"];NSLog(@"%@", subpaths);实现指定文件夹下的所有文件的全部移动方原创 2016-04-15 19:56:49 · 1557 阅读 · 0 评论 -
iOS小技巧 - 判断设备版本
[[UIDevice currentDevice].systemVersiondoubleValue] >= 7.0在iOS版本过度的时候会用到设备版本的判断。可将其定义为宏至pch文件中,这样整个项目都可以用。如在Prefix.pch中加入以下代码: #ifdef __OBJC__// 判断是否为iOS7.0以上#define iOS7 [[UIDevice curren原创 2016-04-15 18:55:50 · 706 阅读 · 0 评论 -
iOS小技巧 - 全局修改状态栏的样式为白色
1,在info.plist中添加一个参数View controller-based status bar appearance(也就是最后一个),并设置为NO作用:状态栏不交给控制器来管理2,在AppDelegate.m中如下方法里添加代码- (BOOL)application:(UIApplication *)application didFinishLaunchin原创 2016-04-15 19:16:41 · 857 阅读 · 0 评论 -
iOS小技巧 - 崩溃统计分析
一、非主流做法将main.m 的内容try起来int main(intargc, char *argv[]) { @try { @autoreleasepool { returnUIApplicationMain(argc,argv, nil, NSStringFromClass([AppDelegateclass]));原创 2016-04-15 19:22:50 · 604 阅读 · 0 评论 -
iOS小技巧 - 隐藏LaunchScreen的状态栏
很多时候希望将启动界面全屏化,但出现了万恶的状态栏,只能通过application去除了。AppDelegate.m的设置原创 2016-04-15 20:43:44 · 3231 阅读 · 0 评论 -
iOS小技巧 - xcode6引入pch文件
大家都知道,为了加快编译速度,从xcode6开始就去掉了pch文件,这样当我们想要进行一些全局定义时就造成了不便。那应该怎么解决做呢?添加pch文件的方法如下:习惯命名:Prefix.pch 这个可以随你喜欢进行命名$(SRCROOT)/Prefix.pch这里的Prefix.pch与你新建的pch文件名字对应原创 2016-04-15 19:13:25 · 265 阅读 · 0 评论 -
iOS小技巧 - 利用苹果自带的方法对齐按钮内的图标与文字
以下代码中的frame的所有属性是经过了简单的get方法和set方法的重写,使其更方便使用!!声明比例/** 图标所占按钮的比例 */const CGFloat kRatio = 0.4;在继承于UIButton的类文件中重写以下两个方法,返回CGRect来掌控比例,设置大小-(CGRect)imageRectForContentRect:(CGRect)contentR原创 2016-04-16 13:56:07 · 2323 阅读 · 0 评论 -
iOS - 扫描二维码
一、导入框架#import 二、添加两个属性/** session */@property(nonatomic, weak) AVCaptureSession *session;/** layer */@property(nonatomic, weak) AVCaptureVideoPreviewLayer *layer;三、示例代码-(void)touchesBegan:(原创 2016-04-30 10:41:56 · 453 阅读 · 0 评论 -
iOS - 生成二维码
一、导入框架#import 二、直接上示例代码-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ // 1.创建过滤器 CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"]; // 2.恢复默认设原创 2016-04-30 09:31:09 · 388 阅读 · 0 评论 -
iOS - 音频后台播放设置及锁屏界面的显示与控制
1、先在项目 的Capabilities中进行设置,开启后台模式2、激活音频会话其它地方也可以,只要保证能执行到以下代码块的内容即可,这里我选择在AppDelegate.m里设置先导入必要的头文件#import 接下来直接示例代码- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOp原创 2016-04-26 14:29:01 · 9669 阅读 · 0 评论 -
iOS - 本地通知
控制器中/**发送本地通知按钮的点击事件 *//**发送本地通知 */- (IBAction)fireLocalNote:(id)sender { // 1.创建本地通知 UILocalNotification *localNote = [[UILocalNotificationalloc] init]; // 2.设置本地通知内容(通知时间原创 2016-04-20 21:26:24 · 501 阅读 · 0 评论 -
iOS - 系统自带的分享功能
先导入系统自带的框架#import 直接示例代码,以新浪微博平台为例-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ // 1.判断平台是否可用 if (![SLComposeViewController isAvailableForServiceType:SLServiceTypeS原创 2016-04-20 14:44:25 · 5747 阅读 · 0 评论 -
iOS - 两种常见的桥接方式
很多时候都会使用到CoreFoundation的函数,其返回值为CoreFoundation框架的对象,如果想转换为Foundation框架的对象就可以使用桥接方式来搞定。示例代码:CFStringRef firstname = ABRecordCopyValue(person, kABPersonFirstNameProperty);CFStringRef lastname = A原创 2016-04-30 17:30:02 · 1899 阅读 · 0 评论 -
iOS - 距离传感器
距离传感器的使用非常简单。第一步,在我们应用中开启距离传感器。第二步,使用通知来监听物品的靠近与离开。示例代码:- (void)viewDidLoad { [super viewDidLoad]; // 开启距离传感器 // [UIApplication sharedApplication].proximitySensingEnabled =原创 2016-05-01 16:29:09 · 662 阅读 · 0 评论 -
iOS - 摇一摇
监听摇一摇的方法方法1:通过分析加速计数据来判断是否进行了摇一摇操作(比较复杂)方法2:iOS自带的Shake监控API(非常简单)判断摇一摇的步骤,实现3个摇一摇监听方法/** 检测到摇动 */- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event{ NSLog(@"用户摇一摇");原创 2016-05-01 17:12:13 · 506 阅读 · 0 评论 -
iOS - 加速计程序的开发
在iOS4以前:使用UIAccelerometer,用法非常简单(从iOS5开始过期)从iOS4开始:苹果引入了一个新的框架:CoreMotion.framework虽然UIAccelerometer已经过期,但由于使用起来极其简单,目前还有很多人在使用。 UIAccelerometer的使用步骤1、获得单例对象2、设置代理3、设置采样间隔示例代码:-原创 2016-05-01 16:56:53 · 415 阅读 · 0 评论 -
iOS - 计步器
一、导入框架#import 二、添加了两个属性/** 计步器对象 */@property(nonatomic, strong) CMStepCounter *counter;/** 记录步数的label */@property (weak, nonatomic) IBOutlet UILabel *stepLabel;三、懒加载#pragma mark - 懒加载代码-(CMS原创 2016-05-01 17:39:10 · 382 阅读 · 0 评论 -
iOS - 将图片保存至相册
使用的方法:UIImageWriteToSavedPhotosAlbum(, , , )image:要保存的图片,保存完毕就会调用 completionTarget 这个对象的completionSelector 这个方法注意: completionSelector 该调用的方法不可以乱写,不然会报参数越界这个错误,进头文件查看,官方有推荐我们使用哪个方法(方法名可以瞎写,但接原创 2016-05-27 15:58:17 · 299 阅读 · 0 评论 -
iOS - SQLite
SQLite语句/*查询*/SELECT name, age, score FROM t_student;SELECT * FROM t_student;/*修改指定数据*/UPDATE t_student SET name = 'MM' WHERE age = 10;UPDATE t_student SET name = 'WW' WHERE age is 7;UPDATE t_stud原创 2016-05-28 08:54:16 · 273 阅读 · 0 评论 -
iOS - block、代理、通知
一、block LXFColorViewController.htypedefvoid(^SelectColor)(UIColor*color);/** 选择颜色的回调block */@property(nonatomic, copy) SelectColor selectColor;LXFColorViewController.m在适当的位置传入对应的值if (sel原创 2016-05-15 09:56:32 · 349 阅读 · 0 评论 -
iOS - 利用pch文件在程序发布时统一去除打印代码
在pch文件里加入以下代码#ifdef DEBUG#define LXFLog(...) NSLog(__VA_ARGS__)#else#define LXFLog(...)#endif以后在使用打印代码时直接使用 LXFLog 即可原创 2016-05-16 21:20:30 · 319 阅读 · 0 评论 -
Xcode升级插件兼容一键解决命令工程
1.每当Xcode升级之后,都会导致原有的Xcode插件不能使用,这是因为每个插件的Info.plist中记录了该插件兼容Xcode版本的 DVTPlugInCompatibilityUUID,而每个版本的Xcode的DVTPlugInCompatibilityUUID都是不同的。如 果想让原来的插件继续工作,我们就得将新版Xcode的DVTPlugInCompatibilityUUID加入到每一转载 2016-04-21 18:49:03 · 325 阅读 · 0 评论 -
iOS小技巧 - 利用xcode快速找到沙盒
我们在进行调试沙盒读写的时候最头痛的就是找沙盒的位置,网上有大神开发出来方便我们的工具 iOS-Sim-Viewer,但今天介绍下如何用xcode的方式快速找到沙盒位置,完成我们的目标--完美装逼!!!首先,在你的项目的任意位置打个断点,然后直接运行,等到到断点位置时,在弹出的调试区域右侧输入以下代码po NSHomeDirectory()输入后直接回车,我们想要找的沙盒路径就出来原创 2016-04-21 20:55:47 · 964 阅读 · 0 评论 -
iOS - 设置底部输入框随键盘的移动而移动
xib:一个tableview和一个view ,并设置一些约束,输入框的底部紧贴着整个view的底部下边的输入框需要设置为随键盘的移动而移动一 .将底部约束拖到对应的.m文件中二 .在适当的位置(如:viewDidLoad)注册通知// 注册通知 [[NSNotificationCenter defaultCenter] ad原创 2016-05-30 21:40:51 · 5989 阅读 · 0 评论 -
iOS - UIAlertController
在iOS8之后,苹果官方将UIAlertController替代了UIActionSheet和UIAlertView。把两种类型的提示信息放到这一个类里来实现。注意, 这个class不能通过继承的方式来自定义。示例:ActionSheet// 创建UIAlertControllerUIAlertController *alertController = [UIAler原创 2016-05-31 14:05:01 · 577 阅读 · 0 评论 -
iOS - 自动计算cell的高度(iOS8 Auto-sizing)
从iOS8开始,苹果就可以使用Auto-sizing来自动计算tableView中cell的高度了一 .照常我们自定义一个cell,并添加了各种约束(具体的自行搞定,因为这跟本文要讲的没什么太大的关系),并设置对应的数据,但不要去计算cell的高度应用该cell后,发现cell的高度就是默认高度44 二 . 接下来只需要两个个步骤即可实现自动计算cell高度原创 2016-06-01 15:50:39 · 2900 阅读 · 0 评论 -
iOS小技巧 - 解决集成百度地图时出现的坑
在项目中对 BaiduMapAPI.framework 右击,选择Show In Finder,在打开的目录里面找到Resources文件夹,将其拖入项目中,勾选Copy items if needed,拖入后再执行编辑,解决!!原创 2016-05-09 14:28:31 · 4969 阅读 · 0 评论 -
iOS小技巧 - 设置UIView的样式为圆角矩形
方式一:代码控制// 设置登录按钮为圆角矩形self.myView.layer.cornerRadius = 5;self.myView.layer.masksToBounds = YES;// self.loginButton.clipsToBounds = YES; // clipsToBounds底层调用的是layer.masksToBounds如果是纯代码添加的view,原创 2016-05-21 11:06:24 · 477 阅读 · 0 评论 -
iOS小技巧 - 设置TextField光标颜色
tintColor属性self.textField.tintColor = [UIColor yellowColor];原创 2016-05-21 15:11:57 · 1157 阅读 · 0 评论