【Swift】iOS开发笔记(二)

摘要:
Int{iflettext=self.text{letsize=NSString(字符串:选项:属性:上下文:“cover”))vc.addURL(NSURL(字符串:“https:

前言

  这个系列主要是一些开发中遇到的坑记录分享,有助于初学者跨过这些坑,攒够 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 了,查找一下定义就能看到分享到别,这里还有一个全的: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开发笔记(二)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇customize-cra 打包时 去除 map 文件plsql无法连接64位oracle数据库的解决方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ElasticSearch安装拼音插件(pinyin)

环境介绍 集群环境如下: Ubuntu14.04 ElasticSearch 2.3.1(3节点) JDK1.8.0_60 开发环境: Windows10 JDK 1.8.0_66 Maven 3.3.3 Intellij IDEA 2016.1 下载编译Pinyin clone elasticsearch-analysis-pinyin 通过...

安装jseclipse到myeclipse中

三种安装方式:1、在线安装2、下载安装包进行安装3、下载解压缩包进行安装 一、在线安装方式:    a、打开Help窗口,即:Help > Software Update. 选择 Find and Install     b、选择 "Search for new features to install",点击 Next    c、点击 "New Re...

iOS UI-线程(NSThread)及其安全隐患与通信

一、基本使用 1.多线程的优缺点 多线程的优点 能适当提高程序的执行效率 能适当提高资源利用率(CPU、内存利用率) 多线程的缺点 开启线程需要占用一定的内存空间(默认情况下,主线程占用1M,子线程占用512KB),如果开启大量的线程,会占用大量的内存空间,降低程序的性能 线程越多,CPU在调度线程上的开销就越大 程序设计更加复杂:比如线程之间的通信、多线...

使用UIImageView展现来自网络的图片

本文转载至 http://www.cnblogs.com/chivas/archive/2012/05/21/2512324.html UIImageView:可以通过UIImage加载图片赋给UIImageView,加载后你可以指定显示的位置和大小。 1、初始化 UIImageView  *imageView = [[UIImageView all...

attrib命令

attrib指令的格式和常用参数为:ATTRIB [+R | -R] [+A | -A ] [+S | -S] [+H | -H] [[drive:] [path] filename] [/S [/D]]   +    设置属性。   -     清除属性。   R    只读文件属性。   A    存档文件属性。   S    系统文件属性。   H ...

增加wamp64 PHP支持版本

1.停止WAMP服务器.2.下载要安装的PHP版本。下载Window版本的ZIP包啦:http://php.net/downloads.php。解压到 Wamp的安装目录C:wamp64inphpphp7.2.13.从已存在的php版本文件中(如phpphp7.1.9 (C:wamp64inphpphp7.1.9)复制以下文件: - php.ini、php...