
ios开发记录
bryan__ren
这个作者很懒,什么都没留下…
展开
-
iOS 11下layoutSubviews调用改动
iOS 11中view移动时,当y值在statusBar之下时,会调用layoutSubViews方法。如果y值不在statusBar之下就不用调用。当有NavigationBar时,当y值在NavigationBar或statusBar之下时,会调用layoutSubViews方法。如果y值不在NavigationBar或statusBar之下就不用调用。在iOS 11以下的版本中,不会调用。原创 2017-12-13 16:48:41 · 859 阅读 · 0 评论 -
加载tabbar的视图在启动后直接push到下一界面出现navigationbar失效的解决方法
项目中用到推送消息在应用打开时直接push到消息显示页,由于使用了自定义tabbar,在push到消息页后,需要把tabbar隐藏,但在viewDidAppear之前push,tabbar就不会隐藏。而在viewDidAppear中push,会出现navigationbar失效的问题。经过测试,终于在使用self.navigationController.navigationBar.userI原创 2014-04-10 15:05:03 · 1513 阅读 · 0 评论 -
IOS使用Reachability实时检测网络连接状况
//在程序的启动处,开启通知- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ //.....//开启网络状况的监听[[NSNotificationCenter defaultCen转载 2014-03-25 22:10:18 · 1220 阅读 · 0 评论 -
取消ios7下自带的手势滑动导航
在ios7中苹果加入了手势滑动导航,但以前做的项目和这块有一点冲突,所以想去掉苹果自带的手势滑动导航。取消很简单,只需要自己重写左导航键就可以取消掉系统自带的手势滑动导航。//设置左边的返回- (void)setLeftNavigationBar{ UIButton *backButton = [UIButtonbuttonWithType:UIButtonTyp原创 2014-04-01 11:17:00 · 1623 阅读 · 0 评论 -
xcode5.1下发布app出错解决
前两天升级了xcode5.1,今天在发布应用时,莫名的发布不成功。也不提示什么错误,只有一个fail。经过检索,发现在xcode5.1中增加了对64位的默认支持。所以需要将Targets->Build Settings->Architectures->Valid Architectures->release中的arm64去掉。这样就可以发布了。但这就去掉了对64位的应用支持。最好的办法还是原创 2014-03-18 14:26:45 · 1502 阅读 · 0 评论 -
ios下自定义时间选择控件
通过无限循环scrollview实现的时间选择控件,看着效果还可以。在xcode5.1编译,适用于ios6.0及以上。原创 2014-03-17 15:05:57 · 1806 阅读 · 0 评论 -
ios6,ios7,ios7.1下设置UISearchbar的背景色
ios系统升级到7.1后,原来在7.0下显示正常的UISearchbar现在又出现问题了。究其原因,是由于UISearchbar的subview又做修改了。float version = [[[UIDevicecurrentDevice] systemVersion] floatValue]; if ([mySearchBarrespondsToSelector:@s原创 2014-03-17 11:09:43 · 3539 阅读 · 0 评论 -
ios7中,A界面状态栏下面有个UIScrollView,push到B界面后,回退回来UIScrollView下移和可上下拉动的解决
ios7中,A界面状态栏下面有个UIScrollView,push到B界面后,回退回来UIScrollView下移和可上下拉动的解决:// ios7中,本视图有状态栏、下面为scrollView,这句让进入下一个视图后,再回来,不会出现scrollview下移20(offSet:-20)的情况;添加在viewDidLoad中// 参考资料:http://stac转载 2014-03-15 17:38:26 · 2153 阅读 · 0 评论 -
ios7在push和pop视图出现视图少一块的解决方法
在做ios7下的app视图之间切换时总是出现视图不完整的现象。这是因为在ios7下,由于状态栏和导航栏透明,并且view的真实x和y的坐标就是window的原点。所以完整view的上方会在状态栏和导航栏的下面有一部分遮盖。为了既不影响界面的显示,又达到很好的切换效果。就需要把真个view补齐。所以上方的64px高度的视图要用空白view补齐。if (!SYSTEM_VERS原创 2014-03-15 20:47:55 · 1539 阅读 · 0 评论 -
popToViewController用法
[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:2] animated:YES];或for (UIViewController *temp in self.navigationController.viewControlle转载 2014-03-11 17:49:17 · 909 阅读 · 0 评论 -
plain类型tableview的footview不能跟随tableview下滑
plain类型tableview的footview不能跟随tableview下滑。在设置tableview的style时,如果设置为grouped类型,那么放在footview上得button就可以跟随tableview向下滑动。而设置为plain类型就不能向下滑动。原创 2014-02-19 10:39:00 · 2095 阅读 · 0 评论 -
lame,把ios录音转换为mp3格式
在ios设备中进行录音,录音文件的格式为caf。但这种格式在很多设备中没法播放。为了适应终端的播放功能,特将caf转换为mp3格式文件来使用。在录制caf文件时,需要使用双通道,否则在转换为MP3格式时,声音不对。caf录制端的设置为:NSMutableDictionary * recordSetting = [NSMutableDictionarydictionary];原创 2014-02-27 11:39:10 · 3740 阅读 · 1 评论 -
ios7设置group类型tableview的section间距
在ios7中使用group类型的tableview时,第一个section距离navigationbar的距离很大,不符合这边的设计图。使用myTableView.sectionHeaderHeight =8.0无效。于是通过各种方法测试,终于得到解决方法。就是通过设置tableview的headerview高度来控制这个距离。使用的方法是:- (CGFloat)tableView:(原创 2014-02-27 17:48:11 · 4544 阅读 · 0 评论 -
writeToFile不能创建文件夹
在写程序时,需要把网络上的mp3文件存到本地document中。在写入文件时,总是写入不成功,通过模拟器找到文件的具体存储路径。发现在document下没有自动创建自己所需的文件夹,所以没有写入成功。经过测试后得知是因为writeToFile不会自己创建文件,需要在写入文件之前,先用createDirectoryAtPath创建好文件夹,然后才能用writeToFile写入文件。原创 2014-02-26 10:23:06 · 2957 阅读 · 0 评论 -
ios7下设置navigationbar和statusbar
这个写的很好,转给大家看看。http://www.appcoda.com/customize-navigation-status-bar-ios-7/转载 2013-12-21 11:36:38 · 963 阅读 · 0 评论 -
ios7下不能录音问题解决
在ios6上运行非常正常的AVAudioRecoder组件,而跑到ios7上就不能工作了。通过google搜索在stackoverflow上的解决方法。http://stackoverflow.com/questions/18922053/avaudiorecorder-avaudioplayer-with-ios-7-not-working-properly解决方法只需要在使用AVAudio原创 2013-10-31 16:58:23 · 2105 阅读 · 0 评论 -
使用键盘上的send键
使用ios键盘上的send键来发送消息,由于send键只是return 键的一种样式,通过设置控件的returnKeyType为UIReturnKeySend来把return改为send。其实在你点击它时,打印出的字符照样是‘\n’(换行),所以必须通过监视输入字符的方式来进行事件的实现。需要使用控件的委托,- (BOOL)textView:(UITextView *)textView sho原创 2013-10-21 17:58:27 · 3199 阅读 · 0 评论 -
file is missing from working copy
在ios编程时,需要引进别人的类库,由于都是做了版本控制,所以在文件夹中都多了一个.svn文件。当我们把这些类库拷到自己的项目中时,会出现file is missing from working copy,这是因为一些不必要的文件被作者删掉了,但在.svn中还有记录,所以会出现文件丢失。为了去掉这些警告,我们只需要打开MAC系统的显示隐藏文件属性,就可以在文件夹中看到.svn文件了,把这个文件删除原创 2013-09-21 11:36:09 · 2317 阅读 · 0 评论 -
ios后台推送那点事
近期做个项目要使用推送,虽然以前也做过,但没有仔细研究过,于是就趁着这次机会好好研究一把。以前做推送,都是生成cer文件,把文件教给服务器端处理。这次要自己对服务器处理,的确在这上费了一番周折。但在参考过这篇文章(http://blog.youkuaiyun.com/showhilllee/article/details/8631734)之后,就很快解决了。接下来就是对客户端上的设置了。在客户端上首先注册原创 2014-04-12 10:49:57 · 2338 阅读 · 1 评论 -
ios添加openssl
在xcode中添加openssl文件之后,需要在TARGETS中Build Settings中找到Header Search Paths中添加到openssl文件夹之前的路径。如果在根目录中,添加这个$(SRCROOT)/即可,否则在后面添加相应的文件夹名称。原创 2015-05-19 15:41:44 · 894 阅读 · 0 评论 -
Block的认识和使用
Blocks是Objective-C的匿名函数。block是iOS在4.0之后新增的程序语法。Blocks有三种类型,_NSConcreteGlobalBlock,_NSConcreteStackBlock和_NSConcreteMallocBlock。1._NSConcreteGlobalBlock 全部的静态block,不会访问任何外部变量。2._NSConcreteStackBl原创 2015-08-30 20:59:35 · 1067 阅读 · 0 评论 -
lottie简单试用
Airbnb lottie,一个用json来实现动画的开源项目。通过Bodymovin导出Json文件,然后用lottie在Android、iOS和React Native上实现动画效果。与手写动画相比,节省了不少的时间,而且还兼容Android、iOS。 软件安装步骤: - 1、首先需要安装AE。 - 2、安装完成之后,需要安装Bodymovin插件,安装Bodymovin时按照方法一,下载原创 2017-02-13 14:46:01 · 2239 阅读 · 1 评论 -
iOS 10下网络请求返回Error code=-1005问题修复
wifi情况下,在iOS 10上大概率的出现code = -1005,但在iOS 9,iOS 8,iOS 7上都没有问题。而且移动网络下也没有这个问题。通过谷歌,在苹果论坛中找到了相同情况的帖子。当时还以为是苹果的bug。但通过测试许多大厂的App都没有此问题,而且Android也没有问题,所以就怀疑是iOS App端问题。于是就想自己写一个简单的测试网络服务,只返回和当前App上相同数据量的jso原创 2017-02-10 10:06:08 · 37728 阅读 · 0 评论 -
RN中RCTScrollView中属性重名
在更新到Xcode8之后,RN中的RCTScrollView中refreshControl属性的setter方法出错, 代码如下:- (void)setRefreshControl:(RCTRefreshControl *)refreshControl{ if (_refreshControl) { [_refreshControl removeFromSuperview]; } _r原创 2016-09-19 14:35:57 · 1816 阅读 · 0 评论 -
ABPeoplePicker在iOS10中crash
在iOS10中使用ABPeoplePicker获取联系人电话号码时,直接crash。 在stackoverflowstackoverflower地址中搜到,这个Address Book API 在iOS9已经被废弃,用Contacts Framework替代。 这样只需要把ABPeoplePickerViewController替换为CNContactPickerViewController。具原创 2016-09-19 14:32:05 · 1091 阅读 · 0 评论 -
category探索
apple推荐category的使用场景给现有的类添加方法可以把类的实现分开在几个不同的文件里面。这样做有几个显而易见的好处 可以减少单个文件的体积可以把不同的功能组织到不同的category里可以由多个开发者共同完成一个类可以按需加载想要的category等等声明私有方法 声明私有方法是指,在原类的.m文件中定义category,且category在implement之前,这时在c原创 2016-07-21 15:29:16 · 745 阅读 · 0 评论 -
iOS App Crash日志
在开发App阶段,如果出现了Crash,可以通过Debug area,看出Crash的原因。但应用上线后,怎么去查看Crash Log呢?可以通过以下4种方法查看通过iTunes同步功能,可以把Crash Log同步到Mac或PC上MacOSX: ~/Library/Logs/CrashReporter/MobileDevice/Windows XP: C:\Documents and Sett原创 2016-08-24 15:46:00 · 867 阅读 · 0 评论 -
指纹识别
苹果在iOS8之后开启了指纹识别的功能,如果想让自己的App能够使用指纹识别功能,必须要满足一定的条件才行。开发文档 1. 必须是iPhone5s之后的设备 2. 系统版本必须在等于或大于iOS8具体实现使用指纹识别,必须要引入LocalAuthentication.framework。引入之后,需要import <LocalAuthentication/LocalAuthentication.原创 2016-08-22 14:41:05 · 783 阅读 · 0 评论 -
iOS App对IPv6的支持
从2016年6月1号之后发布或更新App必须要支持IPv6。如果不支持IPv6,直接就会被拒。通过苹果官方文档上提供的方式配置IPv6网络,而后进行IPv6测试,应用跑的很溜,没有出现网络报错和请求慢的问题。但当把App提交给苹果审核时,缺被拒了。而且被拒的理由竟然是: We discovered one or more bugs in your app when reviewed on iPad原创 2016-08-10 09:37:19 · 5523 阅读 · 0 评论 -
OC的私有、保护、公有和KVC
正确理解私有、保护和公有在OC中属性默认都是公有的。如果有私有、保护和公有成员的需求,也可以通过OC关键字进行设置。The Scope of Instance VariablesTo enforce the ability of an object to hide its data, the compiler limits the scope of instance variables—that i原创 2016-08-04 16:17:32 · 1101 阅读 · 0 评论 -
self和Super的msgSend
下面代码输出值引出对Self和Super的msgSend的思考@interface Father : NSObject@end@implementation Father@end@interface Son : Father@end@implementation Son- (instancetype)init{ if (self = [super init]) { N原创 2016-07-29 17:49:25 · 860 阅读 · 0 评论 -
NSArray和NSSet对比
NSArray和NSSet都是用于存储对象的集合;NSSet、NSMutableSet声明的对象,是无序的集合,在内存中存储方式是不连续的;而NSArray、NSMutableArray声明的对象,是有序集合,在内存中的存储位置也是连续的。NSSetNSSet *set = [NSSet setWithObjects:@"1", @"2", @"3", @"4", @"5", @"6",@"7",@原创 2016-07-06 17:24:26 · 753 阅读 · 0 评论 -
NSScanner用法
NSScanner,可以在字符串中扫描指定的字符,并把他们翻译或转换为数字和别的字符串;从头到尾扫描整个字符串的每个字符。 初始化方法: 1. initWithString 2. scannerWithString 3. localizedScannerWithString 刚创建的scanner对象指向字符串的开头。方法setCaseSensitive: //是否忽略大小写,默认是忽略原创 2016-07-12 11:29:06 · 626 阅读 · 0 评论 -
dispatch_async和dispatch_sync在dispatch_get_main_queue上的区别
dispatch_async中加入dispatch_get_main_queue中,是异步运行中把主队列中的运行任务放到主线程中去运行。而dispatch_sync中的dispatch_get_main_queue,是在主线程中运行主队列,当把主队列中得任务放到主线程时,会和dispatch_sync进行线程争夺。这时就会产生线程死锁。原创 2015-09-26 09:45:47 · 2401 阅读 · 0 评论 -
设置navigationbar上得字体和颜色
设置navigationbar上标题的字体和颜色NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:[UIColor appTextBlackColor], NSForegroundColorAttributeName, [UIFont systemFontOfSize:18], NSFontAttributeNa原创 2015-09-26 09:50:27 · 5333 阅读 · 0 评论 -
lanucherImage显示时加载网络任务
显示launchimage直到网络任务完成- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launc原创 2015-09-02 15:32:38 · 485 阅读 · 0 评论 -
iOS UItableviewcell选择背景颜色和字体颜色设置
在iOS7之后,cell的选中样式UITableviewcellStyleBlue不再变为蓝色。 官方文档: UITableViewCellSelectionStyleBlue The cell has a default background color when selected. In iOS 7, the selection color is no longer blue. Use原创 2015-08-05 11:39:20 · 1967 阅读 · 0 评论 -
在NSUserDefaults中保存自定义的对象
在iOS开发中,需要用到一些回调值(从A到B,从B返回时把B中的值带回A中),其实方法也很多(delegate,block,nsuserdefaults等)。我想用NSUserDefaults回调一个我自定义的对象。于是我就直接去setobject这个对象,这是程序就出现crash,crash信息为reason: 'Attempt to insert non-property list obj原创 2015-08-14 22:15:53 · 844 阅读 · 0 评论 -
修改JSONKit中的isa警告
在使用jsonkit时出现一个关于isa的警告,警告为:Direct access to objective-c`s isa is deprecated in favor of object_setClass() and object_getClass()。直接使用isa是被弃用的方法,推荐使用object_setClass()和object_getClass()方法。如果要去掉这里的两个警告,我原创 2013-09-21 11:29:04 · 3294 阅读 · 0 评论 -
Your build settings specify a provisioning profile with the UUID, no provisioning profile was found
在Archive项目时,出现了“Your build settings specify a provisioning profile with the UUID “”, however, no such provisioning profile was found”的出错。一直提示指定UUID的provisioning profile找不到,感觉很奇怪。明明自己的provisioning pr原创 2013-10-01 16:28:08 · 17686 阅读 · 5 评论