iOS UITableView组头视图旋转处理

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

设置了 labelautoresizingMask 后:
label.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin;

label 直接跑到屏幕外面去了(屏幕右边)Q_Q

原来label的父视图contentView一开始还没宽度
等到系统设置宽度后
label就被弹到右边去了


0x01 取个巧

labelframe设置修改一下,

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);


雷达脉冲动画

https://github.com/xjh093/JHRadarAnimation


你可能感兴趣的:(iOS)