0x00 需求
组头视图内有一个UILabel视图
是靠右显示文字
当设备旋转后
文字居中显示了
因为UILabel的宽度写死了Q_Q
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
static NSString *ID = @"header";
UITableViewHeaderFooterView *view = [tableView dequeueReusableHeaderFooterViewWithIdentifier:ID];
if (!view) {
view = [[UITableViewHeaderFooterView alloc] initWithReuseIdentifier:ID];
[view.contentView addSubview:({
UILabel *label = [[UILabel alloc] init];
label.frame = CGRectMake(0, 0, CGRectGetWidth(self.view.bounds), 30);
label.text = @"(0)";
label.textColor = [UIColor whiteColor];
label.font = [UIFont boldSystemFontOfSize:17];
label.textAlignment = NSTextAlignmentRight;
label.tag = 100;
label;
})];
}
UILabel *label = [view.contentView viewWithTag:100];
label.text = [NSString stringWithFormat:@"(%@)",@(self.dataArray.count)];
return view;
}
0x01 autoresizingMask
设置了 label 的 autoresizingMask 后:
label.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin;
label 直接跑到屏幕外面去了(屏幕右边)Q_Q
原来label的父视图contentView一开始还没宽度
等到系统设置宽度后
label就被弹到右边去了
0x01 取个巧
把label的frame设置修改一下,
由
label.frame = CGRectMake(0, 0, CGRectGetWidth(self.view.bounds), 30); 改为
label.frame = CGRectMake(-200, 0, 200, 30);
配合
label.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin; 搞定!
^ _ ^
如果还想设置一下右侧的边距
修改一下x即可
label.frame = CGRectMake(-210, 0, 200, 30);