![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
iOS
移动开发_ziank
这个作者很懒,什么都没留下…
展开
-
Swift中的dispatch_once
我们都知道,从swift3.0开始,dispatch_once被废弃了,而是开始推荐大家使用全局let变量,懒加载的全局变量或者静态成员来完成,但是在extension中,这些方法都会不太合适,因为extension中不支持添加存储类型的属性。首先尝试的方法,就是使用let增加一个属性,然后发现会报错;接着就想到使用懒加载来进行返回,结果还是报同样的错误...原创 2018-03-29 15:56:54 · 1521 阅读 · 0 评论 -
iPad横竖屏切换中的注意点
最近公司要搞iPad的竖屏版本,使用了PrimaryOverlay的方式显示左侧的菜单栏,在实际开发过程中很是遇到了一些问题,这里就记录一下吧:设备方向不等于实际方向部分竖屏页面无法旋转到横屏Popover出现覆盖问题关于这几个问题,其实也并没有特别的麻烦,只是一时间会想不到解决思路而已。设备方向问题设备方向不能够直接读取[UIDevice currentDevice]的方向,因为原创 2018-03-29 15:56:14 · 1642 阅读 · 0 评论 -
iOS 应用提示弹窗
在iOS中要弹出和Android中Toast差不多的提示,并不困难,也有着诸多的第三方库可以使用,但是有些时候我们还是需要自己看一下如何进行实现,比如我们最近的需求,需要在应用进入前台时弹出一个提示,提示中包含有可点击的按钮,那么大部分的第三方库就不支持了。其实这个问题并不复杂,反而非常简单,因为只需要找到最顶层的window,把我们要进行弹窗的UIView加上去就可以了。而获取顶层window原创 2018-03-29 15:56:02 · 2655 阅读 · 0 评论 -
OC&Swift混编的注意点
当前swift正在逐步开始流行,我们也需要与时俱进,但是在项目中又不可能已下载把所有代码进行替换,这就存在了混编的必然性。对于swift和OC的混编,我说一些自己认为需要注意的地方。可选类型:swift中最经典的用法,需要注意的就是如果使用了!,一定不能够为nil,否则将会crash;OC转换时一般会为了简单,把成员变量的类型定义为!,那么一定要注意使用该变量时不可以为空。相互引用:OC原创 2018-03-29 15:55:50 · 494 阅读 · 0 评论 -
Swift中的weak和unowned关键字
Swift中没有了strong, assign, copy关键字,对于所有的class类型变量都默认采用了strong类型,如果需要指定使用weak,则需要添加weak关键字修饰。 正是由于这种默认的strong类型,在闭包中会引起循环引用,导致内存无法释放,为了能够在闭包(block)中正常释放内存,需要对闭包中的self使用弱引用,也就是不持有self对象。 如下面的代码中:cla...原创 2018-07-04 15:50:27 · 946 阅读 · 0 评论 -
自动布局中的NSAutoresizingMaskLayoutConstraint
在使用自动布局的时候,如果是自己通过代码直接写的约束(即不通过SnapKit等第三方库或StoryBoard,Xib之类),那么就会出现NSAutoresizingMaskLayoutConstraint的问题。运气好的话,只是弹出warning,不影响实际布局,但是如果像我一样运气不好,就会出现整个页面的布局错乱。 解决该问题的方法也十分简单,就是对每一个view都设置translatesA...原创 2018-05-31 14:04:13 · 1350 阅读 · 0 评论 -
Swift开发中遇到的注意点(二)
这段时间开发项目的同时在看第三方库Kingfisher的实现,感觉有一些东西也需要记录和总结一下。6. public private(set),public fileprivate(set)这和weak一样是变量的一种修饰,意思是该变量可以public访问,但是赋值是private的,如此设置可以方便许多本来需要readonly的变量的处理。7. DispatchWorkItem这...原创 2018-04-26 11:14:04 · 358 阅读 · 0 评论 -
Swift开发中遇到的注意点(一)
最近的项目是使用Swift进行的开发,在开发过程中,有一些东西和OC是不太一样的,需要特别的注意,这里也就简单的介绍和记录一下。1. 单例模式在OC中的单例模式一般都是使用dispatch_once来实现的,可是在Swift4中,该方法已经被废弃,也就是说单例模式的实现和之前不再一样。在Swift中,单例的实现是通过静态成员和let关键字来实现的,具体代码如下:class Cl...原创 2018-04-13 10:29:49 · 673 阅读 · 0 评论 -
UIAlertController设置自定义的标题和内容
我们知道,UIAlertController的标题和内容都是黑色的,但是在很多场景下都需要修改他们的颜色,比如在输入错误时把提示信息变为红色,或者自定义标题的颜色,可是在公开的API接口中好像并没有对应的方法,那么我们应该怎么做呢?第三方控件第一种方法当然就是使用第三方的Alert控件了,现在Github上有着众多的Alert控件(如SCLAlertVi...原创 2018-03-29 15:56:08 · 1452 阅读 · 0 评论 -
UIAlertController中的UITextField晃动效果和边框颜色
在iOS8中,我们引入了UIAlertController,通过UIAlertController可以方便的添加文本框进行编辑,但是,在输入错误的内容时,如何对用户进行提醒就成了问题,因为UIAlertController中的所有UIAlertAction都会导致UIAlertController的消失。这里,我就描述两种提示的方法,分别是晃动文本框和修...原创 2018-03-29 15:56:05 · 799 阅读 · 0 评论 -
如何为圆角添加阴影
在iOS中为UIView添加阴影还是比较简单的,只需要设置layer的shadow属性就可以了,但是问题在于设置阴影之后,必须设置masksToBounds为NO,而圆角图片则要求masksToBounds必须为YES,两者相互冲突,会导致无法正确的添加阴影。正确的做法是先创建一个透明的UIView,并添加阴影,设置masksToBounds为NO;然后...原创 2018-03-29 15:56:24 · 739 阅读 · 0 评论 -
OC中#import 尖括号和引号的区别
在OC中,我们引用一个头文件,可以使用#import "a.h",也可以使用#import <a.h>,那么这两种方式有什么区别呢?和在C/C++中一样,使用""引入的是本地工程的文件,而使用<>引入的是系统库的文件。在使用中,""会先查找用户目录下文件是否存在,或者说是User Header Search Paths,如果不存在...原创 2018-03-29 15:56:46 · 2946 阅读 · 1 评论 -
巧用阴影实现模糊字体的UILabel
最近,PM提出了一个新的需求,就是要把一个句子中的某些单词给模糊掉,实现提示用户的效果。要求如下图所示:需求图片我一下子能够想到的办法,就是利用UIVisualEffectView进行模糊,或者使用图片进行替换。首先说使用图片的方式,也就是把要模糊的单词做成图片,然后使用NSAttributedString进行显示,乍一看好像可行,实际做的时候发现,由于...原创 2018-03-29 15:57:00 · 2082 阅读 · 0 评论