一周随笔--15.10.27

一周新知识点记录(15.10.27)

一、不规则按钮OBShapedButton

常规按钮都是一个矩形区域,即使设置了按钮layer的cornerRadious,能响应点击事件的依旧是整个矩形区域。

OBShapedButton是开源的第三方库,直接继承自UIButton,直接使用即可。它的响应区域只限定在button的图片或者背景图片区域,周围空出的区域无法响应。


二、sendActionsForControlEvents

UIButton的实例方法,通过代码手动发送按钮的点击事件触发按钮的响应方法。


三、ios时间的时区瓜葛

代码中所有得到的NSDate都是UTC时间(国际标准时间,同GMT时间),例如打印[NSDate date],打印结果总会是UTC时间,不管设备的时区怎么更变。

那么在处理时间的时候是不是要在时区上下一番工夫呢?例如后台返回一个时间字符串,我想改变它的格式,需要做的是先得到时间字符串的date,然后重新设置格式得到新的时间字符串。之前说过所有的Date都是UTC时间,因此,打印中间得到的date会发现时间比当前慢了8小时(假设当前系统时区为东8区),那么用这个时间来生成新的string,结果会不会就慢8小时呢?答案是不会的,因为时间格式NSDateFormatter有timezone属性,这个属性的值默认为当前系统时区,因此从dete转换到string的时候,系统计算时自动地在UTC时间上加了系统时区的偏差时,所以还是原来的时间,并不会慢8小时。另外中间date慢了8小时也是根据dateFormatter的timezone值来的。

除了NSDateFormatter,日历类NSCalendar也有timeZone属性。假设现在获取到了一个日期date对应的dateComponents,打印date查看发现时间慢8小时,而打印dateComponents的hour查看,发现并不会慢8小时,打印结果就是当前小时。因为在从date->dateComponents需要借助NSCalendar对象,而calendar同样有个timeZone属性,默认也是当前系统时区,转换过程中会自动加上时区偏差小时数(时差)。

因此在时区问题上通常并不需要做多余处理。


四、关于present popoverController时的警告

若当前视图控制器的显示是add视图控制器的view是到上层视图控制器的某个view中,而不是Push到UInavagationController中或者是在UITabbarController容器中的,也就是说这个控制器未处在当前app的堆栈中,那么从这个视图控制器present另一个视图控制器或者popover会发出警告 Presenting view controllers on detached view controllers!


五、使用UITableView+FDTemplateLayoutCell自动计算Cell高度

之前计算Cell的高度都是根据Cell内容空间逐个计算高度然后相加得到一个确定值,这样当控件数量多,或者像label这种要根据文本长度自适应高度的控件,在计算label的高度的时候也要计算文本高度才行,多么蛋疼的事!有了UITableView+FDTemplateLayoutCell,cell高度计算问题会省力很多!

UITableView+FDTemplateLayoutCell 简单来说,一句话解决cell高度计算的问题。

在heightForRowAtIndexPath代理方法中写

return [tableView fd_heightForCellWithIdentifier:@"identifierMyCell" cacheByIndexPath:indexPath configuration:^(id cell) {
       //cell的可变内容配置 例如label的text,用来确定高度
}];

这样tableView就能自动根据cell的autoLayout情况计算出高度。

因此使用该方法的前提是cell内容控件的自动布局一定要准确。可以IB中布局也可以纯代码自动布局,个人习惯使用Masonry代码布局。


六、判断是否是第一次使用app

[[NSUserDefaults standardUserDefaults] boolForKey:@"firstStart"]可以用来判断是否是第一次使用app。

第一次启动前为NO,启动后要手动设为YES


七、关于在UINavagationControllerUItabBarControllerview上添加视图

若直接对UINavagationController.view或者UItabBarController.view添加视图myView,对前者而言,push了一个viewController之后,myView不会被覆盖,依旧显示在屏幕最前面。对后者而言,切换viewController后,myView同样显示在老地方。

时间: 2024-08-08 05:13:27

一周随笔--15.10.27的相关文章

一周随笔--15.10.06

一周新知识点记录(15.10.06) 一.UIWindow的windowLevel (优先级) 我们在程序中获取通过[UIApplication sharedApplication].keyWindow获取到应用程序的主屏幕,其实并不一定是AppDelegate类中定义的那个window.首先了解UIWindow的一些概念: UIWindow是一种特殊的UIView,它也可以自定义,在程序中可以同时显示多个UIWindow对象(UIWindow对象通过makeKeyAndVisible方法显示出

一周随笔--15.10.19

一周新知识点记录(15.10.19) 一.ipad——UIPopoverController UIPopoverController继承自NSObject,因此不具备显示能力,它是通过其中的内容控制器显示的内容的.  UIPopoverController使用四部曲: 一.创建UIPopoverController的内容控制器 二.根据内容控制器初始化UIPopoverController对象 三.设置UIPopoverController对象的尺寸 四.显示UIPopoverControlle

一周随笔--15.11.02

一周新知识点记录(15.11.02) 一.storyboard中搭建tableViewCell 在storyboard中搭建tableView,一种是以UITableViewController为容器,另一种则是以UIViewController为容器,拖出一个tableView来. 当以UITableViewController为容器时,UITableViewCell可以是动态也可以是静态的,若是静态的则控制器可以不关联文件.(具体待验证)http://m.blog.csdn.net/blog

一周随笔--15.9.21

一周新知识点记录(15.9.21) 一. writeToFile:atomically: - (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile; 第二个参数的意思是: 如果为YES则保证文件的写入原子性,就是说会先创建一个临时文件,直到文件内容写入成功再导入到目标文件里. 如果为NO,则直接写入目标文件里. 二.  NSerror 参数依次为: 1.错误域(NSString) 2.错误标识 (NSIntege

一周随笔--15.9.28

一.阴影(NSShadow)参考 self.view.layer.shadowColor = [UIColor blackColor].CGColor; //阴影颜色 self.view.layer.shadowOffset = CGSizeMake(10, 10); //阴影偏移 四周阴影则设置为CGSizeZero self.view.layer.shadowOpacity = 1; //阴影透明度,默认为0,不显示 self.view.layer.shadowRadius = 10; //

10.23 linux任务计划cron10.24chkconfig工具10.25 systemd管理服务10.26 unit介绍 10.27 target介绍

- 10.23 linux任务计划cron - 10.24 chkconfig工具 - 10.25 systemd管理服务 - 10.26 unit介绍 - 10.27 target介绍 - 扩展 1. anacron http://blog.csdn.net/strikers1982/article/details/4787226  2. xinetd服(默认机器没有安装这个服务,需要yum install xinetd安装) http://blog.sina.com.cn/s/blog_46

开关智能管理工具NI Switch Executive 15.10

NI Switch Executive 15.10是一款智能的开关管理与路由程序.在用于自动测试设备(ATE)系统的开关软件中 ,它提供了最新的革命.使用NI Switch Executive 15.10,你将可以通过交互式配置和命名开关模型.外部连接 和信号路由等途径来提高开发效率.你也可以使用NI TestStand, LabVIEW, LabWindows/CVI, 和 Measurement Studio进行开关编程来提高测试代码重用和系统性能.最终NI Switch Executive

Ubuntu 15.10

安装Ubuntu 15.10后要做的事 http://blog.csdn.net/skykingf/article/details/45267517 ubuntu15.10 install-mac-theme http://www.linuxdiyf.com/linux/15583.html 每周一贴:Ubuntu Kylin 15.10 如何安装Mac主题 http://www.ubuntukylin.com/news/shownews.php?lang=cn&id=547 Opencv3.1

Ubuntu 15.10搭建IPSec L2TP服务器

以下步骤完全使用于Ubuntu 14.04版本 首先安装以下所需包 sudo apt-get install openswan xl2tpd ppp lsof!注意!Ubuntu 15.10会提示无法找到openswan包,解决办法是用喜欢的编辑器编辑以下文件,实例用vimsudo vim /etc/apt/sources.list在文件最后添加一行deb http://us.archive.ubuntu.com/ubuntu precise main universe保存后,执行下面命令sud