iOS 持续更新 开发中的一些小问题和技巧1
1.IOS8 设置TableView Separatorinset 分割线从边框顶端开始
-(void)viewDidLayoutSubviews { if ([self.tableView respondsToSelector:@selector(setSeparatorInset:)]) { [self.tableView setSeparatorInset:UIEdgeInsetsMake(0,0,0,0)]; } if ([self.tableView respondsToSelector:@selector(setLayoutMargins:)]) { [self.tableView setLayoutMargins:UIEdgeInsetsMake(0,0,0,0)]; } } -(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { if ([cell respondsToSelector:@selector(setSeparatorInset:)]) { [cell setSeparatorInset:UIEdgeInsetsZero]; } if ([cell respondsToSelector:@selector(setLayoutMargins:)]) { [cell setLayoutMargins:UIEdgeInsetsZero]; } }
2.push的时候的一些不可不用的细节
CartConfirmOrderViewController *viewController = [[CartConfirmOrderViewController alloc] init]; // 这是要push过去的自定义controller viewController.hidesBottomBarWhenPushed = YES; // 我push过去的页面不需要tabbar,这个方法完美解决 viewController.arrayWithPrice = self.arrayWithPrice; // 需要传点数据给push过去的页面,轻轻松松
3.关于tableViewcell 分割线不完整
如果只是简单的初始化一个cell,可能可以满足大部分需求。但是直接初始化的tableviewcell的左边的分割线是默认15像素的距左,如果需求是分割线等cell宽,如果是通过取消分割线然后再设置控件去做假效果当然可以实现,但其实原生方法可以取消这个讨厌的15像素
分两步。直接贴上以下代码即可
-(void)viewDidLayoutSubviews
{
if ([self.tableView respondsToSelector:@selector(setSeparatorInset:)]) {
[self.tableView setSeparatorInset:UIEdgeInsetsMake(0,0,0,0)];
}
if ([self.tableView respondsToSelector:@selector(setLayoutMargins:)]) {
[self.tableView setLayoutMargins:UIEdgeInsetsMake(0,0,0,0)];
}
}
-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
if ([cell respondsToSelector:@selector(setSeparatorInset:)]) {
[cell setSeparatorInset:UIEdgeInsetsZero];
}
if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {
[cell setLayoutMargins:UIEdgeInsetsZero];
}
}
另外:
设置footer可以取消多余的cell的哦,但是我觉得并不优美,推荐下面的写法
-(void)setExtraCellLineHidden: (UITableView *)tableView { // 随便自定义一个方法,self调用即可
UIView *view = [UIView new];
view.backgroundColor = [UIColor clearColor];
[tableView setTableFooterView:view]; // 其实道理是一样的,但是这样个人觉得更漂亮,比较好标注
}
4. 关于导航条
现在需求是导航条透明,navigationBar设置一张透明的背景图应该是比较好的选择。但是这样做导航条下面会出现一条黑色的细线,以下方法取消
//去掉导航栏下部的黑色素线
if ([self.navigationController.navigationBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)]){
NSArray *list = self.navigationController.navigationBar.subviews;
for (id obj in list) {
if ([obj isKindOfClass:[UIImageView class]]) {
UIImageView *imageView=(UIImageView *)obj;
imageView.hidden=YES;
}
}
}
浙公网安备 33010602011771号