0

UITableViewCell サブクラスでは、backgroundView にサブビューを追加しています。

-(void)method {
    [self.backgroundView addSubview:self.backView];
    [self setConstraintsForBackView];
}

-(UIView*)backView {
    if (!_backView) {
        _backView = [[UIView alloc] initWithFrame:CGRectZero];
    }
    return _backView;
}

backViewでサイズを取得しようとしていbackgroundViewます。私は NSLayoutConstraints を使用するのが最善の方法だと考えましたが、backView各セルに設定している実際の高さではなく、常に元の 44 ポイントのセルの高さで表示されます。これが私の NSLayoutConstraints のコードです

-(void)setConstraintsForBackView {
    [self.backView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[view]|"
                                                                          options:0
                                                                          metrics:nil
                                                                            views:@{@"view": self.backView}]];
}

次のエラーが表示されます。

'Unable to install constraint on view. Does the constraint reference something from outside the subtree of the view? That's illegal. constraint:<NSLayoutConstraint:0x89662d0 V:|-(0)-[UIView:0x8e87c10] (Names: '|':UIView:0x8e876c0 )> view:<UIView: 0x8e87c10; frame = (0 0; 0 0); layer = <CALayer: 0x8e87c70>>'

私も@"V:|-0-[view]-0-|"運なしで試しました。

確かに、私は NSLayoutConstraints の経験が豊富ではありませんが、さまざまな視覚フォーマットをいじっても結果は得られません。

4

1 に答える 1