【问题标题】:Objective c - proper way to set subview frame so it will fill the screen目标 c - 设置子视图框架的正确方法,使其充满屏幕
【发布时间】:2012-06-04 14:01:36
【问题描述】:

我在 navigationController 中有一个 viewController,该视图控制器有一个 tableview。
viewDidLoad 我设置了tableview

- (void)viewDidLoad
{
    [super viewDidLoad];

    // init tableView
    CGRect tableFrame = self.view.bounds;

    _tableView = [[UITableView alloc] initWithFrame:tableFrame style:UITableViewStylePlain];

    _tableView.delegate = self;
    _tableView.dataSource = self;

    [self.view addSubview:_tableView];
}

这段代码的问题是表格视图框架不正确 - 高度是 460,我需要它是 416。

[iPhone屏幕高度为480,减去状态栏(20)减去导航栏(44)=416]

那么设置表格视图以填满屏幕的正确方法是什么?
我可以想到两种方法:

  1. 将其框架设置为 = (0, 0, 320, 416)

  2. 使用:[_tableView setAutoresizingMask:(UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth)];

【问题讨论】:

    标签: iphone objective-c ios uiview uiviewcontroller


    【解决方案1】:

    不要使用幻数。正确使用调整大小标志。 所以是的,你的 2. 方法是正确的。

    1) 使用超级视图边界。
    _tableView.frame = self.view.bounds;;

    2) 设置自动调整大小标志
    [_tableView setAutoresizingMask: UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth];

    (你已经完成了所有这些:)

    【讨论】:

      【解决方案2】:

      数字 1 绝对是错误的做法...如果屏幕尺寸在未来的操作系统/设备中发生变化会发生什么?

      我很好奇您为什么不使用 nib 文件执行此操作,这样可以省去麻烦,但如果您必须在代码中执行此操作,请根据您的选项 2 设置自动调整大小掩码。

      【讨论】:

        猜你喜欢
        • 2022-08-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多