由于IOS加入对用户隐私以及禁止扫描系统信息的控制,目前通过canOpenURL的方法来判断用户是否安装特定app,则会出现-canOpenURL: failed for URL: "ABC://app/*******/" - error: "This app is not allowed to query for scheme ABC"的错误, 同时也返回NO,直接通过openUrl也是没有反应.具体原因可以参考文章:Quick Take on iOS 9 URL…
一.之前用黑苹果,编辑pod文件用一下格式 platform :ios, "8.0" pod "MJExtension" pod "MJRefresh" pod "AFNetworking" pod "SVProgressHUD" pod "SDWebImage" pod "DACircularProgress" pod "pop" 二.用虚拟机的…
文顶顶iOS开发博客链接整理及部分项目源代码下载   网上的iOS开发的教程很多,但是像cnblogs博主文顶顶的博客这样内容图文并茂,代码齐全,示例经典,原理也有阐述,覆盖面宽广,自成系统的系列教程却很难找.如果你是初学者,在学习了斯坦福iOS7公开课和跟着文顶顶的博客做项目之后,最快只需要2个月时间,就基本可以独立完成iOS App的开发工作.有经验的开发者也可以在该博客中寻找代码片段进行学习借鉴,必有所收获. 在此也向@文顶顶 表示严重感谢! 由于文顶顶博客博文繁多,每次找文章需要频繁的翻…
类似微信聊天消息中的电话号码点击保存到通讯录中的功能,ABAddress的实现在iOS9中是不能正常使用的,点击完成后,手机会非常的卡,iOS9之后需要使用Contact新提供的方法来实现该功能.快捷保存手机号码到系统通讯录中的需求在很多的应用中都会用的到,QQ.微信等社交软件都是可以见到的,虽然实现起来也是很简单的,小编还是把这个小功能整理一下,方便后面在需要的时候能方便的使用,也能方便朋友们能感到方便.有需要的直接可以拿去,甚是方便,废话不多说,代码已经上传Github:https://gi…
#import "ViewController.h" @interface ViewController () /** 注释 */ @property (nonatomic, strong) dispatch_source_t timer; @end @implementation ViewController /** * 1:GCD中的定时器:GCD中的定时器不受NSRanLoop影响 2:必须有强引用,引用该timer,要不,在方法执行完毕后timer就会被销毁,所以就不能执行定时…
iOS9之后的UIWindow的问题(TopWindow),以及UIWindow与statusBar之间的联系 1.出现的问题 iOS9之后UIWindow必须要指定一个根控制器,不然会报错!iOS9之前只是警告 当创建了window,指定了根控制器之后.在别的控制器设置statusBar的样式和颜色没有效果.因为statusBar的样式和颜色是由位于最顶端的UIWindow的控制器决定的! 2.问题解决 将topWindow实现为单例模式(这里简单实现,完整的单例模式请参考之前的整理),为了以…
前言:在网易新闻的练习中遇到了这个错误 注意:练习中遇到了如图的bug,主要是因为用storyboard布局 600 * 600   显示的时候要经过自动布局,缩小到相应手机的屏幕大小.也就是有的尺寸要进行缩放.练习中自己取出的view是显示出来的尺寸375,而从storyboard中显示出来是在600的尺寸.系统会自动布局适应屏幕大小,600压缩到375,相应的里面的子控件也会从375压缩的更小.就出现了如图所示. 解决办法:用一个storyboard中控件的尺寸…
iOS [错误:'Changing the delegate of a tab bar managed by a tab bar controller is not allowed.'] 错误:'Changing the delegate of a tab bar managed by a tab bar controller is not allowed.' 意为不允许修tabBar的delegate属性 产生原因:设置代理的这句代码写在了 为 tabBarController 的 tabBa…
一.错误分析:由于tableFooterView中的数据是通过请求服务器后得到的,tableFooterViewHeight也是根据请求过来的数据经过布局子控件而计算出来的.(注意:计算高度是在子线程中执行的),导致了给TableView设置了tableFooterView,tableFooterView的高度为0.如下图: 二.解决方案一:通过KVO监听自定义tableFooterView的高度变化 解决方案二:通过block,当自定义tableFooterView计算出高度后,才将自定义控件…
如图:红色框中是个自定义的导航工具条titlesView(没有绑定Tag),工具条中有五个按钮(按钮绑定了Tag)以及一个红色的指示器indicatorView(没有绑定Tag),下面的蓝色是可以滚动的scrollView,拖动scrollView,红色指示器会滚到对应按钮的下面,并且按钮呈红色显示. 在scrollView的代理方法scrollViewDidEndDecelerating:中通过 获得按钮首先注意的一点是,当指定的Tag为0时,会默认首先拿到的是调用这个方法的控件,也就是父控件…