ios学习笔记(二)

最近又学习了一些小知识点,继续整理。

1.autolayout并不能完全解决适配问题,通常是给一套iphone6的设计图,然后根据图上的标注进行约束的添加,当这些约束添加好后,在iphone5上可能不会适配的很好,此时需要进行微调,或者将约束拉进代码中,根据屏幕大小,在代码中重新设置约束。通常在viewDidLoad中直接修改从storyboard拉进来的约束,不需要再调用其他方法,但是在别的地方如果修改了约束,可能需要调用一些必要的方法(例如setNeedsLayout等方法)。这里了解的还不是很多,之后会再进行学习。如果有人能总结,非常感谢。

2.在使用了自动布局的视图中,如果在代码中又修改了视图的frame大小,在屏幕转换之后,这个frame会恢复成原来的样子。这里也是需要注意的地方。

3.如果使用了autolayout,那么在做动画的时候,操作frame,bounds,center等位置属性时,需要注意,因为动画是临时的,下次setNeedsupdateConstraint会全部失效,还有需要注意的地方是,如果在动画中改变了约束大小,一定要调用view.layoutIfNeeded()方法,一定要,一定要,一定要,重要的事情说三遍。

4.添加约束可以使用addContraint()方法,在ios8中也可以使用新的约束名称.active = true;

5.在添加约束后的控件的size inspector中,有两个选项,一个是Content Hugging Proprity一个是Content Compression Resistance Proprity,前者是抗拉伸优先级,后者表示抗压缩优先级。Hug值越高越难被拉伸,CompressionResistance值越高越难被压缩。可以根据这两个值来决定控件是否允许在某些条件下被压缩或拉伸。

6.在使用tabkeViewController时,可以直接在tableview.headerView上放一个头视图(例如搜索框),然后再在每个section上放置头视图。

7.在tableView中改变每个section的标题有两种方法。一种是直接调用- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section方法,然后根据section设置标题大小,这里可以使用富文本来调整字体属性。另外一种是- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section  在此方法中设置UITableViewHeaderFooterView(  

  UITableViewHeaderFooterView *header = [tableViewdequeueReusableHeaderFooterViewWithIdentifier:@"UITableViewHeaderFooterView"];
),然后改变header的属性,例如header.textLabel.text = @"",该方法需要在viewDidLoad中注册[self.tableViewregisterClass:[UITableViewHeaderFooterViewclass]forHeaderFooterViewReuseIdentifier:@"UITableViewHeaderFooterView"];
// self.tableView.sectionHeaderHeight = 60; 注释的方法中可以改变宽度,当然也可以在方法

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section中改变宽度。

8.sqlite中sqlite3_last_insert_rowid()方法可以获取插入的最后id,然后可以根据select * frome  table where ROWID = 来获取最后的数据。

9.去除tableView中多余的分割线可以给tableView添加一个空白的footerView,也可以取消cell的分割线,然后在自己定义一个view来模拟cell的分割线,这时,在最后一行后的分割线也会消失。

10.在代码中使用自动约束时,一定要记住关闭控件的translatesAutoresizingMaskIntoConstraints属性,不然会报错的。

11.viewcontroller有一个definesPresentationContext的bool值属性,该值表示当前的视图控制器或其子类又提供了一个视图控制器时,当前视图控制器的视图是否被覆盖。例如UINavigatinController中的该值为YES,因为他提供了一个viewController。  当这个值设置为yes时,系统将会要求此试图控制器来控制视图(如弹出或者进入新视图)。如果为NO,则会寻找下一层,一直到根视图控制器。

12.header Search path 是用于include <>(例如framework或者.a库或者系统库,boost) User header search path 是用于include ""(工程目录下的头文件),当然如果设置Always Search User Paths  为yes, include< >对于user paths来说也会有效。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值