博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Swift】iOS开发历险记(二)
阅读量:6458 次
发布时间:2019-06-23

本文共 2710 字,大约阅读时间需要 9 分钟。

前言

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

 

声明 

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

 

正文

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

  缺少 layoutIfNeeded ,事例:

UIView.animateWithDuration(0.15, animations: { () -> Void in            self.heightConstraint.constant = 100            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 0    }}

 

  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 了,查找一下定义就能看到分享到别,这里还有一个全的:

    注意: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 这行崩溃。

转载:http://www.cnblogs.com/over140/p/5197442.html

你可能感兴趣的文章
Spring <context:annotation-config/> 说明
查看>>
lua
查看>>
Java排序算法(四):Shell排序
查看>>
poj_3468 伸展树
查看>>
Linux ag命令
查看>>
【BZOJ】3495: PA2010 Riddle
查看>>
windows执行命令来运行loadrunner录制好的脚本(收藏)
查看>>
Linux automake命令
查看>>
Linux使用jstat命令查看jvm的GC情况
查看>>
CareerCup All in One 题目汇总
查看>>
xmind 使用备忘
查看>>
Atitit.java jar hell解决方案-----Djava.ext.dirs in ide envi..
查看>>
线段树之入门篇
查看>>
03.Web大前端时代之:HTML5+CSS3入门系列~H5功能元素
查看>>
js后退一直停留在当前页面或者禁止后退
查看>>
深入理解Java内存模型(一)——基础
查看>>
ABP源码分析五:ABP初始化全过程
查看>>
webpack window 添加第三方库
查看>>
用CSS border相关属性画三角形
查看>>
ubuntu分区
查看>>