在做一个横屏的浮层聊天功能的时候,发现在Cell上设置子控件不能左对齐。
tableView的创建和添加,因为是要做消息往上“顶”的效果,所以将tableView旋转180度 CGAffineTransformMakeRotation(M_PI)
self.tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain];
self.tableView.delegate = self;
self.tableView.dataSource = self;
self.tableView.separatorStyle = UITableViewCellSelectionStyleNone;
self.tableView.showsVerticalScrollIndicator = NO;
self.tableView.backgroundColor = [UIColor clearColor];
self.tableView.transform = CGAffineTransformMakeRotation(M_PI);
[self.view insertSubview:self.tableView atIndex:0];
cell也旋转了180度
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *cellIdentifier = @"VHChatViewController_VHChatTableViewCell";
VHChatTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (!cell) {
cell = [[VHChatTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
cell.backgroundColor = [UIColor brownColor];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.transform = CGAffineTransformMakeRotation(M_PI);
}
[cell setModel:self.dataSource[indexPath.row]];
return cell;
}
cell中布局
- (void)layoutSubviews {
[super layoutSubviews];
[self.bgView mas_updateConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(0);
make.right.mas_equalTo(0);
make.top.mas_equalTo(5);
make.bottom.mas_equalTo(-5);
}];
[self.hearderBtn mas_updateConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(10);
make.top.mas_equalTo(6);
make.width.mas_equalTo(20);
make.height.mas_equalTo(20);
}];
[self.emoLabel mas_updateConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.hearderBtn.mas_right).offset(10);
make.top.equalTo(self.hearderBtn.mas_top);
make.right.mas_equalTo(-12);
make.height.equalTo(self.bgView.mas_height);
}];
}
发现这个bgView的x坐标并不是0。
后来发现将bgView添加在self上就不会出这个问题,添加在self.contentView上就会出这个问题。
给self.contentView设置了红色,看了下图层:
发现contentView的x坐标发生了偏移,bgView在contentView上,所以也偏移了。
添加在self上就好了。
为什么cell的contentView会发生偏移呢,可能是因为将tableView旋转,cell旋转导致的吧。