前言

  这个系列主要是一些开发中遇到的坑记录分享,有助于初学者跨过这些坑,攒够 7 条发一篇。

声明 
  欢迎转载,但请保留文章原始出处:) 
  博客园:http://www.cnblogs.com
  农民伯伯: http://over140.cnblogs.com

正文

  1、用动画更新约束没有动画效果?

  缺少 layoutIfNeeded ,事例:

        UIView.animateWithDuration(0.15, animations: { () -> Void in
self.heightConstraint.constant =
self.view.layoutIfNeeded() // 这行不能少
})

  2、处理单击和双击冲突

  singleTapRecognizer.requireGestureRecognizerToFail( doubleTapRecognizer )

  但是有一个问题,单击响应会变慢,所以最好更改设计方案。

  3、获取 UILabel 的行数(不受 Lines 限制)

extension UILabel {

    func lineCount() -> Int {
if let text = self.text {
let size = NSString(string: text).boundingRectWithSize(CGSizeMake(bounds.width, CGFloat.max), options: NSStringDrawingOptions.UsesLineFragmentOrigin, attributes: [NSFontAttributeName : self.font], context: nil)
return Int(ceil(size.height / self.font.lineHeight))
} return
}
}

  4、自定义分享(分享到 Facebook、Twitter、Weibo)

    本来不打算写,主要是搜索的时候没有很快搜到相关结果

    func shareSocialAction(serviceType: String) {
let vc = SLComposeViewController(forServiceType: serviceType)
vc.setInitialText("欢迎来看直播")
vc.addImage(UIImage(named: "cover"))
vc.addURL(NSURL(string: "https://shou.tv/over140"))
presentViewController(vc, animated: true, completion: nil)
}

    传入 SLServiceTypeTwitter 就能分享到 Twitter 了,查找一下定义就能看到分享到别,这里还有一个全的:OvershareKit

    注意:let vc = SLComposeViewController(forServiceType: serviceType) 可能会返回 nil ,需要加判断处理(网上有说国行的 iPhone 可能屏蔽掉了)。我这里的处理办法是走 Twitter 和 Facebook 的 SDK 发起分享。

  5、IQKeyboardManager 禁止某个 UITextField 的工具栏

    针对 ViewController 级别禁用工具栏:IQKeyboardManager.sharedManager().disableToolbarInViewControllerClass ,如果这个 UITextField 直接 add 到 window 上的这个方法就不管用了,可以直接设置 inputAccessoryView = UIView() 即可。

  6、AFNetworking 3.0 输出 Log

            let networkLogger = AFNetworkActivityLogger.sharedLogger()
networkLogger.startLogging()
let console = AFNetworkActivityConsoleLogger()
console.level = AFHTTPRequestLoggerLevel.AFLoggerLevelDebug
networkLogger.addLogger(console)

  7、AVCaptureDevice.requestAccessForMediaType 授权失败弹 UIAlertView 需要放到 dispatch_async(dispatch_get_main_queue()) 主线上

                AVCaptureDevice.requestAccessForMediaType(AVMediaTypeVideo, completionHandler: {[weak self](granted: Bool) in
if granted {
// 授权成功
} else {
// 授权失败,弹一个 UIAlertView
dispatch_async(dispatch_get_main_queue()) {
//UIAlertView....
}
}
})

  如果不增加  dispatch_async(dispatch_get_main_queue())  这个代码,在部分设备上提示 UIAlertView 这行崩溃。

系列

  【Swift】iOS开发笔记(一)

【Swift】iOS开发笔记(二)的更多相关文章

  1. 菜鸟手下的iOS开发笔记(swift)

    在阳春4月的一天晨会上,有一个老板和蔼的对他的一个菜鸟手下说:“你既然会Android,那你能不能开发iOS?” 不是说好的要外包的吗?内心跌宕,但是表面淡定的菜鸟手下弱弱的回道:“可以试试”. 第二 ...

  2. iOS开发笔记7:Text、UI交互细节、两个动画效果等

    Text主要总结UILabel.UITextField.UITextView.UIMenuController以及UIWebView/WKWebView相关的一些问题. UI细节主要总结界面交互开发中 ...

  3. IOS开发笔记(4)数据离线缓存与读取

    IOS开发笔记(4)数据离线缓存与读取 分类: IOS学习2012-12-06 16:30 7082人阅读 评论(0) 收藏 举报 iosiOSIOS 方法一:一般将服务器第一次返回的数据保存在沙盒里 ...

  4. IOS开发笔记 IOS如何访问通讯录

    IOS开发笔记  IOS如何访问通讯录 其实我是反对这类的需求,你说你读我的隐私,我肯定不愿意的. 幸好ios6.0 以后给了个权限控制.当打开app的时候你可以选择拒绝. 实现方法: [plain] ...

  5. iOS开发笔记-两种单例模式的写法

    iOS开发笔记-两种单例模式的写法   单例模式是开发中最常用的写法之一,iOS的单例模式有两种官方写法,如下: 不使用GCD #import "ServiceManager.h" ...

  6. XMPPFrameWork IOS 开发(二)- xcode配置

    原始地址:XMPPFrameWork IOS 开发(二) 译文地址:   Getting started using XMPPFramework on iOS 介绍 ios上的XMPPFramewor ...

  7. iOS开发笔记--什么时候调用layoutSubviews

    iOS开发笔记--什么时候调用layoutSubviews 分类: iOS2014-04-22 16:15 610人阅读 评论(0) 收藏 举报 今天在写程序时候遇见layoutSubviews触发时 ...

  8. Android &Swift iOS开发:语言与框架对比

    转载自:http://www.infoq.com/cn/articles/from-android-to-swift-ios?utm_campaign=rightbar_v2&utm_sour ...

  9. Django开发笔记二

    Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.xadmin添加主题.修改标题页脚和收起左侧菜单 # ...

随机推荐

  1. Spring之BeanFactory和FactoryBean接口的区别

    目录 一.BeanFactory接口 二.FactoryBean接口 1.简单实现 2.增强实现 3.FactoryBean的实际使用案例 三.总结 @   Spring框架中的BeanFactory ...

  2. Redis数据类型使用场景及有序集合SortedSet底层实现详解

    Redis常用数据类型有字符串String.字典dict.列表List.集合Set.有序集合SortedSet,本文将简单介绍各数据类型及其使用场景,并重点剖析有序集合SortedSet的实现. Li ...

  3. Java 工厂模式(一)— 简单工厂模式

    一.什么是工厂模式: Java中的工厂模式主要是用来将有大量共同接口的类实例化.工厂模式可以动态的决定将哪一个类实例化,不必事先知道要实例化哪个类,将类的实例化的主动权交给工厂而不是类本身.我们常见的 ...

  4. 20, CSS 定义选择器

    1. ID 与类 2. 层叠 3. 分组 4. 继承 5. 上下文选择器 6. 子类选择器 7. 其他选择器 8. 结构与注释 20.1 ID 与类 选择器是用于控制页面设计的样式.即 ID 选择器何 ...

  5. vue 中promise 异步请求数据

    export function getTypes(type) { return listDictItems({ code: type }).then((res) => { if (res.cod ...

  6. 理解sort()函数的排序原理

    看了很多关于sort()函数的定义和解释还是不太清楚,尤其是初学者很容易看懵,这里讲讲自己是如何理解的. 首先,要理解sort()内部是利用递归进行冒泡排序的: 例如: var arr = [1, 5 ...

  7. C# Html格式内容转Csv内容包括table(重点在rowspan和colspan合并),p,div元素

    Html格式内容转Csv内容,包括table(重点在rowspan和colspan合并),p,div元素,table不能包含嵌套功能. /// <summary> /// Html格式内容 ...

  8. 虚拟机下centos7.x简易命令大全与试玩体验

    OS: liunxversion: centos7.xdate: 2019-01-18 1. cd  /                               : 进入服务器根目录2. cd . ...

  9. linux初学者常用必备命令整理

    Linux命令学习 1.文件&目录处理 ls -a 全部文件 -l 详细信息 -r 递归显示子目录结构 ls -al 相当于 ls -a -l cd ..上级目录 .当前目录 ~家目录 cd ...

  10. Mac上webstorm与git仓库建立连接

    1.打开Mac终端,输入$ cd ~/.ssh检查.ssh文件是否存在($在终端中存在,不需要自己输入),不存在,进行步骤2 2.如果没有安装ssh文件,输入命令$ssh -v,安装ssh文件,成功时 ...