0

単一の UITableViewController を使用して、Xcode で新しいシングルビュー プロジェクト (ストーリーボードを使用) を作成しました。セットアップコードは次のとおりです。

- (void)viewDidLoad {
    [super viewDidLoad];

    _footerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 44, 44)];
    _footerView.autoresizingMask = UIViewAutoresizingFlexibleWidth;

    UILabel *l = [[UILabel alloc] initWithFrame:CGRectMake(60, 0, 44, 44)];
    l.text = @"Label Label Label Label Label Label Label Label Label";
    l.autoresizingMask = UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleWidth;
    l.backgroundColor = [UIColor clearColor];

    [_footerView addSubview:l];

    _footerView.backgroundColor = [UIColor lightGrayColor];
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return 1;
}

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
    return _footerView.frame.size.height;
}

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {
    return _footerView;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    return [tableView dequeueReusableCellWithIdentifier:@"Cell"];
}

カスタム テーブル フッター ビューのラベルを x = 60 で描画したいのですが、プロジェクトを実行すると、最初はラベルが見えません (縦向きで、画面が添付されています)。次に、一度回転すると表示され、縦向きに戻すと表示されます。

私は何が欠けていますか?

ラベルが表示されない 風景

4

1 に答える 1

0

フッター ビューを幅と高さ 44px で初期化しているようですが、その境界の外にラベルを追加しています。

代わりに次のことを試してください。

_footerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(self.tableView.frame), 44)];

_footerView.autoresizingMask = UIViewAutoresizingFlexibleWidth;

UILabel *l = [[UILabel alloc] initWithFrame:CGRectInset(_footerView.bounds, 60.0f, 0.0f)];
l.text = @"Label Label Label Label Label Label Label Label Label";
l.autoresizingMask = UIViewAutoresizingFlexibleWidth;
l.backgroundColor = [UIColor clearColor];

[_footerView addSubview:l];

_footerView.backgroundColor = [UIColor lightGrayColor];

さらに[UIColor clearColor]、ラベルの背景色として使用しないようにしてください。スクロールのパフォーマンスが大幅に低下します。この場合[UIColor lightGrayColor]、スーパービューと一致するように使用する必要があります。

于 2013-01-18T13:44:29.047 に答える