iOS常用技巧
来源:互联网 发布:热血江湖sf源码 编辑:程序博客网 时间:2024/06/04 20:05
ios中常用的小技巧(总有你不知道的和你会用到的)
一、父视图设置的透明度影响到子视图的透明度问题
二、控件的局部圆角问题
你是不是也遇到过这样的问题,一个button或者label,只要右边的两个角圆角,或者只要一个圆角。该怎么办呢。这就需要图层蒙版来帮助我们了。
举例为button,其它继承自UIView的控件都可以
三、navigationBar的透明问题
首先我们看一下苹果官方给出的解释:
现在让我这个英语半吊子来翻译一下,他的意思就是说如果你不调用这个方法设置一张背景图片的话,那我就给你默认一张,然后同时还有一张阴影图片被默认设置上去,好吧,这就是导航栏上1px黑线的由来,没错,就是这个苹果赠送的shadowImage。
相信看到这个解释即使不继续说下去有些同学也知道解决办法了吧,没错嘛,你就用上面说的那个方法,给设置一张背景图片,然后在设置一张shadowImage就可以了,就像这样:
<code class="objectivec" style="padding: 0px; font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; font-size: 12px; border: none; background-color: transparent;"><span style="color: rgb(101, 123, 131);">根据UI的设计,navigationbar需要跟界面一体化,但是下面这根黑线是比较烦的问题,可能界面一需要隐藏,界面二就要出现,也可能需要改变粗细之类的,又因为navigationbar会影响接下来的推栈,所以需要做一点小改动.方法</span><span style="color: rgb(42, 161, 152);">2</span><span style="color: rgb(101, 123, 131);">:直接隐藏:</span><span class="hljs-comment" style="color: rgb(147, 161, 161);">//在页面出现的时候就将黑线隐藏起来</span><span style="color: rgb(101, 123, 131);"> -(</span><span class="hljs-keyword" style="color: rgb(133, 153, 0);">void</span><span style="color: rgb(101, 123, 131);">)viewWillAppear:(</span><span class="hljs-built_in" style="color: rgb(38, 139, 210);">BOOL</span><span style="color: rgb(101, 123, 131);">)animated{ [</span><span class="hljs-keyword" style="color: rgb(133, 153, 0);">self</span><span class="hljs-variable" style="color: rgb(181, 137, 0);">.navigationController</span><span class="hljs-variable" style="color: rgb(181, 137, 0);">.navigationBar</span><span style="color: rgb(101, 123, 131);"> setBackgroundImage:[</span><span class="hljs-built_in" style="color: rgb(38, 139, 210);">UIImage</span><span style="color: rgb(101, 123, 131);"> new] forBarMetrics:</span><span class="hljs-built_in" style="color: rgb(38, 139, 210);">UIBarMetricsDefault</span><span style="color: rgb(101, 123, 131);">]; [</span><span class="hljs-keyword" style="color: rgb(133, 153, 0);">self</span><span class="hljs-variable" style="color: rgb(181, 137, 0);">.navigationController</span><span class="hljs-variable" style="color: rgb(181, 137, 0);">.navigationBar</span><span style="color: rgb(101, 123, 131);"> setShadowImage:[</span><span class="hljs-built_in" style="color: rgb(38, 139, 210);">UIImage</span><span style="color: rgb(101, 123, 131);"> new]];}</span><span class="hljs-comment" style="color: rgb(147, 161, 161);">//在页面消失的时候就让navigationbar还原样式</span><span style="color: rgb(101, 123, 131);">-(</span><span class="hljs-keyword" style="color: rgb(133, 153, 0);">void</span><span style="color: rgb(101, 123, 131);">)viewWillDisappear:(</span><span class="hljs-built_in" style="color: rgb(38, 139, 210);">BOOL</span><span style="color: rgb(101, 123, 131);">)animated{ [</span><span class="hljs-keyword" style="color: rgb(133, 153, 0);">self</span><span class="hljs-variable" style="color: rgb(181, 137, 0);">.navigationController</span><span class="hljs-variable" style="color: rgb(181, 137, 0);">.navigationBar</span><span style="color: rgb(101, 123, 131);"> setBackgroundImage:</span><span class="hljs-literal" style="color: rgb(101, 123, 131);">nil</span><span style="color: rgb(101, 123, 131);"> forBarMetrics:</span><span class="hljs-built_in" style="color: rgb(38, 139, 210);">UIBarMetricsDefault</span><span style="color: rgb(101, 123, 131);">]; [</span><span class="hljs-keyword" style="color: rgb(133, 153, 0);">self</span><span class="hljs-variable" style="color: rgb(181, 137, 0);">.navigationController</span><span class="hljs-variable" style="color: rgb(181, 137, 0);">.navigationBar</span><span style="color: rgb(101, 123, 131);"> setShadowImage:</span><span class="hljs-literal" style="color: rgb(101, 123, 131);">nil</span><span style="color: rgb(101, 123, 131);">];}这个方法唯一的不好就是会影响导航栏的translucent(透明)属性方法</span><span style="color: rgb(42, 161, 152);">3</span><span style="color: rgb(101, 123, 131);">:找出黑线,再做处理:</span><span class="hljs-comment" style="color: rgb(147, 161, 161);">//通过一个方法来找到这个黑线(findHairlineImageViewUnder):</span><span style="color: rgb(101, 123, 131);"> - (</span><span class="hljs-built_in" style="color: rgb(38, 139, 210);">UIImageView</span><span style="color: rgb(101, 123, 131);"> *)findHairlineImageViewUnder:(</span><span class="hljs-built_in" style="color: rgb(38, 139, 210);">UIView</span><span style="color: rgb(101, 123, 131);"> *)view { </span><span class="hljs-keyword" style="color: rgb(133, 153, 0);">if</span><span style="color: rgb(101, 123, 131);"> ([view isKindOfClass:</span><span class="hljs-built_in" style="color: rgb(38, 139, 210);">UIImageView</span><span class="hljs-variable" style="color: rgb(181, 137, 0);">.class</span><span style="color: rgb(101, 123, 131);">] && view</span><span class="hljs-variable" style="color: rgb(181, 137, 0);">.bounds</span><span class="hljs-variable" style="color: rgb(181, 137, 0);">.size</span><span class="hljs-variable" style="color: rgb(181, 137, 0);">.height</span><span style="color: rgb(101, 123, 131);"> <= </span><span class="hljs-number" style="color: rgb(42, 161, 152);">1.0</span><span style="color: rgb(101, 123, 131);">) { </span><span class="hljs-keyword" style="color: rgb(133, 153, 0);">return</span><span style="color: rgb(101, 123, 131);"> (</span><span class="hljs-built_in" style="color: rgb(38, 139, 210);">UIImageView</span><span style="color: rgb(101, 123, 131);"> *)view; } </span><span class="hljs-keyword" style="color: rgb(133, 153, 0);">for</span><span style="color: rgb(101, 123, 131);"> (</span><span class="hljs-built_in" style="color: rgb(38, 139, 210);">UIView</span><span style="color: rgb(101, 123, 131);"> *subview </span><span class="hljs-keyword" style="color: rgb(133, 153, 0);">in</span><span style="color: rgb(101, 123, 131);"> view</span><span class="hljs-variable" style="color: rgb(181, 137, 0);">.subviews</span><span style="color: rgb(101, 123, 131);">) { </span><span class="hljs-built_in" style="color: rgb(38, 139, 210);">UIImageView</span><span style="color: rgb(101, 123, 131);"> *imageView = [</span><span class="hljs-keyword" style="color: rgb(133, 153, 0);">self</span><span style="color: rgb(101, 123, 131);"> findHairlineImageViewUnder:subview]; </span><span class="hljs-keyword" style="color: rgb(133, 153, 0);">if</span><span style="color: rgb(101, 123, 131);"> (imageView) { </span><span class="hljs-keyword" style="color: rgb(133, 153, 0);">return</span><span style="color: rgb(101, 123, 131);"> imageView; } } </span><span class="hljs-keyword" style="color: rgb(133, 153, 0);">return</span><span style="color: rgb(101, 123, 131);"> </span><span class="hljs-literal" style="color: rgb(101, 123, 131);">nil</span><span style="color: rgb(101, 123, 131);">;}</span><span class="hljs-comment" style="color: rgb(147, 161, 161);">//再定义一个imageview来等同于这个黑线 </span><span style="color: rgb(101, 123, 131);"> </span><span class="hljs-built_in" style="color: rgb(38, 139, 210);">UIImageView</span><span style="color: rgb(101, 123, 131);"> *navBarHairlineImageView; navBarHairlineImageView = [</span><span class="hljs-keyword" style="color: rgb(133, 153, 0);">self</span><span style="color: rgb(101, 123, 131);"> findHairlineImageViewUnder:</span><span class="hljs-keyword" style="color: rgb(133, 153, 0);">self</span><span class="hljs-variable" style="color: rgb(181, 137, 0);">.navigationController</span><span class="hljs-variable" style="color: rgb(181, 137, 0);">.navigationBar</span><span style="color: rgb(101, 123, 131);">];同样的在界面出现时候开启隐藏 -(</span><span class="hljs-keyword" style="color: rgb(133, 153, 0);">void</span><span style="color: rgb(101, 123, 131);">)viewWillAppear:(</span><span class="hljs-built_in" style="color: rgb(38, 139, 210);">BOOL</span><span style="color: rgb(101, 123, 131);">)animated{ navBarHairlineImageView</span><span class="hljs-variable" style="color: rgb(181, 137, 0);">.hidden</span><span style="color: rgb(101, 123, 131);"> = </span><span class="hljs-literal" style="color: rgb(101, 123, 131);">YES</span><span style="color: rgb(101, 123, 131);">;}</span><span class="hljs-comment" style="color: rgb(147, 161, 161);">//在页面消失的时候就让出现</span><span style="color: rgb(101, 123, 131);"> -(</span><span class="hljs-keyword" style="color: rgb(133, 153, 0);">void</span><span style="color: rgb(101, 123, 131);">)viewWillAppear:(</span><span class="hljs-built_in" style="color: rgb(38, 139, 210);">BOOL</span><span style="color: rgb(101, 123, 131);">)animated{ navBarHairlineImageView</span><span class="hljs-variable" style="color: rgb(181, 137, 0);">.hidden</span><span style="color: rgb(101, 123, 131);"> = </span><span class="hljs-literal" style="color: rgb(101, 123, 131);">NO</span><span style="color: rgb(101, 123, 131);">;}如果想要做一些更好的处理,比如说改变粗细,颜色之类的也在界面出现的时候写就行了.推荐使用第二种方法,因为整个项目都在使用导航栏推栈,出栈,很可能因为改变了样式,导致后面的属性混乱起来.</span></code>
方法4.下一个解决办法,将UINavigationBar的clipsToBounds属性设成YES就好啦,从此黑线去无踪。
方法5.最后一个办法,就是循环遍历一下UINavigationBar的所有子视图,发现有UIImageView类型的视图就remove掉,或者设成隐藏状态(hidden)。虽然也能达到想要的效果,但是感觉这个方法太暴力了,不是很推荐。
四、全局设置navigationBar标题样式和barItem的标题样式
五、navigationBar隐藏和显示的过度
在返回后将要出现的页面实现viewWillAppear方法,需要隐藏就设为YES,需要显示就设为NO
六、给webView添加头视图
七、模态跳转的动画设置
八、图片处理:只拿图片的一部分
九、给TableView或者CollectionView的cell添加简单的动画,像这样
十、点击屏幕隐藏键盘
(1)在ViewController的viewDidload方法中增加一个点击手势,
十一、隐藏UITabbar
十二、iOS中字符串过滤掉非法字符
这里简单说两种方法,第一种就是替代法:使用stringByReplacingOccurrencesOfString这个方法将字符串里的非法字符逐个替代这样做比较烦的一个问题就是,如果要过滤掉的非法字符有很多的话,就得写多行这种替代代码。
另外一种方法比较巧妙,先将字符串按非法字符集进行截断最后再拼接起来。代码看起来很简直,直接了断。
在doNotWant这个字符集里想写几个就写几个。
另外不能用stringByTrimmingCharactersInSet这个方法进行过滤,它能做到的仅仅是把字符串两端的非法字符过滤,但是包含在字符串里非法字符则无能为力。
1. 获取磁盘总空间大小
2. 获取磁盘可用空间大小
3. 获取指定路径下某个文件的大小
4. 获取文件夹下所有文件的大小
5. 获取字符串(或汉字)首字母
6. 将字符串数组按照元素首字母顺序进行排序分组
使用如下:
输出结果如下:
7. 获取当前时间
8. 计算上次日期距离现在多久, 如 xx 小时前、xx 分钟前等
使用如下:
输出结果如下:
9. 判断手机号码格式是否正确
10. 判断邮箱格式是否正确
11. 将十六进制颜色转换为 UIColor 对象
12. 对图片进行滤镜处理
13. 对图片进行模糊处理
14. 调整图片饱和度、亮度、对比度
15. 创建一张实时模糊效果 View (毛玻璃效果)
16. 全屏截图
17. 截取一张 view 生成图片
18. 截取view中某个区域生成一张图片
19. 压缩图片到指定尺寸大小
20. 压缩图片到指定文件大小
21. 获取设备 IP 地址
需要先引入下头文件:
代码:
22. 判断字符串中是否含有空格
23. 判断字符串中是否含有某个字符串
24. 判断字符串中是否含有中文
25. 判断字符串是否全部为数字
26. 绘制虚线
- iOS常用技巧
- iOS-常用技巧
- iOS开发常用技巧
- iOS常用技巧
- iOS 常用小技巧
- iOS 常用一些技巧
- iOS常用术语 技巧 秘籍
- ios开发常用技巧汇总
- ios开发常用的技巧
- iOS 常用开发及技巧
- iOS -常用小技巧大杂烩
- ios开发常用技巧汇总
- iOS开发常用的技巧
- 【IOS基础知识】之常用小技巧
- IOS开发中 常用调试技巧
- iOS开发的22个常用技巧
- iOS 开发中常用知识点和技巧
- ios开发中常用小技巧
- 软件需求分析文档模版
- 课堂感悟
- 一些题目总结
- Tomcat、http、get/post
- RxJava 学习笔记(二)
- iOS常用技巧
- 运算符重载
- 结构化数据,非结构化数据和关系型数据库(RDB)、非关系数据库的关系(Non-RDB)
- android调用系统相机,获取照片的适配性问题
- angularjs提示框及正则表达式校验
- c++ STL string一些总结
- DNS测试工具querperf
- 开启dblink的 oracle net trace与tracing --对dblink进行跟踪的方法
- hive 序列化serde