02-iOS 项目点滴-01

项目点滴系列,记录一些项目中的思考和发现,以及一些其他的。


1、Masonry在iOS 7上导致了crash?

本以为搞定了scrollView + autolayout的布局问题,就可以很开心的使用Masonry了。万万没想到,还有UITableview这个坑等着我。iOS 7 上,tableView本身是不支持的autolayout的。如果在tablview上添加subview,并且添加约束的话,运行起来就会crash。
解决问题的思路很简单:subView照样添加,约束照样用,不过,需要用一个中间view来做subview的容器(我们叫它myContainerView),再把这个myContainerView添加到tableView上,myContainerView使用frame来表示与tableView的关系。如果要做横竖屏适配,记得在viewController的生命周期方法

-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration

中动态改变myContainerView的frame。


2、UITableView的分割线不顶头?

这句话不是什么时候都管用:

    [cell setSeparatorInset:UIEdgeInsetsZero];

啥也不说了,直接上代码:

-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    // Remove seperator inset
    if ([cell respondsToSelector:@selector(setSeparatorInset:)]) {
        [cell setSeparatorInset:UIEdgeInsetsZero];
    }
    
    // Prevent the cell from inheriting the Table View's margin settings
    if ([cell respondsToSelector:@selector(setPreservesSuperviewLayoutMargins:)]) {
        [cell setPreservesSuperviewLayoutMargins:NO];
    }
    
    // Explictly set your cell's layout margins
    if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {
        [cell setLayoutMargins:UIEdgeInsetsZero];
    }
}

你可能感兴趣的:(02-iOS 项目点滴-01)