项目点滴系列,记录一些项目中的思考和发现,以及一些其他的。
<pre style="padding:10px; margin-top:0px; margin-bottom:0px; font-family:'Helvetica Regular'; font-size:1.3em; overflow:scroll; background-color:rgba(251,199,182,0.3); border-left-width:10px; border-left-style:solid; border-left-color:rgb(231,129,112); color:rgb(231,129,112) ">
1、Masonry在iOS 7上导致了crash?</pre>
本以为搞定了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。
<pre style="padding:10px; margin-top:0px; margin-bottom:0px; font-family:'Helvetica Regular'; font-size:1.3em; overflow:scroll; background-color:rgba(251,199,182,0.3); border-left-width:10px; border-left-style:solid; border-left-color:rgb(231,129,112); color:rgb(33,33,33) ">
2、UITableView的分割线不顶头?</pre>
这句话不是什么时候都管用:
[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];
}
}