2016-10-27 9 views
0

私のアプリケーションのUITableViewControllerのcellForRowAtIndexPath:メソッドでは、プログラムのUIViewを各セルのcell.contentViewの最後に固定する必要があります。ここに私のコードです:UIViewをセルの一番下に固定する制約を取得するcontentView

separatorLineView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320,15)]; 
separatorLineView.tag = 17; 
separatorLineView.backgroundColor = [UIColor colorWithHexString:@"F0F5F7"]; 
[cell.contentView addSubview:separatorLineView]; 
[self.separatorLineView setTranslatesAutoresizingMaskIntoConstraints:NO]; 

NSDictionary* views = NSDictionaryOfVariableBindings(separatorLineView); 
NSString *format = @"V:[separatorLineView]-|"; 


positionYConstraint = [NSLayoutConstraint constraintsWithVisualFormat:format 
                    options:0 
                    metrics:nil 
                    views:views];  

heightConstraint = [NSLayoutConstraint constraintWithItem:postSeparatorLineView 
                attribute:NSLayoutAttributeHeight 
                relatedBy:NSLayoutRelationEqual 
                 toItem:cell.contentView 
                attribute:NSLayoutAttributeHeight 
                multiplier:0.01 
                constant:15]; 


[cell.contentView addConstraints:positionYConstraint]; 
[cell.contentView addConstraint:heightConstraint]; 
[cell.contentView layoutSubviews]; 

setTranslatesAuto...:NOラインIがいなくても、ビューデバッガで、separatorLineViewを見ることができないでそれを実行しています。私がその行をコメントアウトすると、separatorLineViewはcell.contentViewの一番上に設定されます。

本質的にすべて私はコードを実行する必要がありますseparatorLineViewを各セルのcontentViewの一番下に固定します - 動的セル高さを覚えておいてください。

答えて

1

横に拘束が必要です。そうでなければ、幅とxの位置がわかりません。これを確認してください:

UIView * separatorLineView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320,15)]; 
separatorLineView.tag = 17; 
separatorLineView.backgroundColor = [UIColor colorWithHexString:@"F0F5F7"]; [cell.contentView addSubview:separatorLineView]; 
[separatorLineView setTranslatesAutoresizingMaskIntoConstraints:NO]; 

NSDictionary* views = NSDictionaryOfVariableBindings(separatorLineView); 
NSString *formatV = @"V:[separatorLineView(==15)]|"; // changed this line to set 15 as height and to really pin your view (note I remove the "-" because it adds a 8 margin) 


NSArray *positionYConstraint = [NSLayoutConstraint constraintsWithVisualFormat:formatV 
                   options:0 
                   metrics:nil 
                   views:views]; 

NSString *formatH = @"H:|[separatorLineView]|"; //these are the missing constraints 
NSArray *positionXConstraint = [NSLayoutConstraint constraintsWithVisualFormat:formatH 
                   options:0 
                   metrics:nil 
                   views:views]; 


[cell.contentView addConstraints:positionYConstraint]; 
[cell.contentView addConstraints:positionXConstraint]; 
+0

これは正解です。ありがとう、魅力のように働いた。 – Chisx

+0

ようこそ@Chisx。自分のケースで「(== 15)」と「 - 」を使用しない理由を理解するには、この文書を確認してください:https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/AutolayoutPG/ VisualFormatLanguage.html – ghashi

関連する問題