From: http://www.jianshu.com/p/bb21b4d45a8d
UITableViewCell的选中时的颜色设置
1.系统默认的颜色设置
//无色
cell.selectionStyle = UITableViewCellSelectionStyleNone;
//蓝色
cell.selectionStyle = UITableViewCellSelectionStyleBlue;
//灰色
cell.selectionStyle = UITableViewCellSelectionStyleGray;
2.自定义颜色和背景设置
改变UITableViewCell选中时背景色:
UIColor *color = [[UIColoralloc]initWithRed:0.0 green:0.0 blue:0.0 alpha:1];//通过RGB来定义自己的颜色
cell.selectedBackgroundView = [[UIView alloc] initWithFrame:cell.frame];//这句不可省略
cell.selectedBackgroundView.backgroundColor = [UIColor xxColor];
3.自定义UITableViewCell选中时背景
cell.selectedBackgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"cellart.png"]] ;
//还有字体颜色
cell.textLabel.highlightedTextColor = [UIColor xxxcolor]; [cell.textLabel setTextColor:color];//设置cell的字体的颜色
4.设置tableViewCell间的分割线的颜色
[theTableView setSeparatorColor:[UIColor xxColor]];
5、设置cell中字体的颜色
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if(indexPath.row == 0)
{
cell.textLabel.textColor = ...;
cell.textLabel.highlightedTextColor = ...;
}
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| override func layoutSubviews() { self.selectedBackgroundView?.frame = self.bounds super.layoutSubviews() if #available(iOS 8 , *){ for control in self.subviews{ if control.isMember(of: NSClassFromString("UITableViewCellEditControl")!){ for v in control.subviews{ if v.isKind(of: UIImageView.classForCoder()){ if self.isSelected{ (v as! UIImageView).image = UIImage(named: "bjzl_gx") }else{ } } } } } }else{ for view in self.subviews{ if view.isMember(of: NSClassFromString("UITableViewCellScrollView")!){ printLog("views \(view.subviews)") let views2 = view.subviews for control in views2{ if control.isMember(of: NSClassFromString("UITableViewCellEditControl")!){ for v in control.subviews{ if v.isKind(of: UIImageView.classForCoder()){ let img = v as! UIImageView if self.isSelected{ img.image = UIImage(named: "bjzl_gx") }else{ } } } } } } } } }
|
—– 遇到一个坑爹的问题– 顶部留白20像素 —-
1 不是 automaticallyAdjustsScrollViewInsets 问题 已经设置false
2 不是ios 11 的问题 已经设置不自动计算
tab
1 2 3
| self.estimatedRowHeight = 0 self.estimatedSectionFooterHeight = 0 self.estimatedSectionHeaderHeight = 0
|
3 最后, 原因 UITableViewWrapperView 和 UItableView frame 不一致造成的,
据说是 navigationBar.alpha 不为1 会出现,自动下移, 在布局后 重置下内容位置
1 2 3 4
| override func viewDidLayoutSubviews() { super.viewDidLayoutSubviews(); self.tableView.contentInset = UIEdgeInsets.zero; }
|
滑动到顶部 或者底部
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| - (void)scrollToBottom { CGFloat yOffset = 0; if (self.tableView.contentSize.height > self.tableView.bounds.size.height) { yOffset = self.tableView.contentSize.height - self.tableView.bounds.size.height; } [self.tableView setContentOffset:CGPointMake(0, yOffset) animated:NO]; } NSIndexPath *indexPath = [NSIndexPath indexPathForRow:self.messageModelArray.count-1 inSection:0]; [tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionBottom animated:YES];
|