我有一個初始化的類,沒有框架設置 - ClassA在下面。 ClassA的實例未設置爲自動佈局。它的框架是在稍後手動設置的。不過,我希望ClassA的子視圖能夠自動佈局。問題是我無法找到正確的方式來做到這一點。如果我在layoutSubview被調用之前嘗試設置約束(在框架被設置之前),約束將不會被驗證。如果我嘗試在layoutSubviews中調用Super後設置它們,我會得到這個iOS - 嘗試在佈局子視圖上設置Autolayout子視圖
執行-layoutSubviews後仍然需要自動佈局。 GHTExerciseSetView的-layoutSubviews實現需要調用super。
如果我在超級調用之後嘗試設置約束(它看起來並不正確),它似乎起初工作,但是當我開始添加更多的ClassA實例並重繪時,我遇到了更多的問題約束不驗證。主要的問題是,以這種方式佈局視圖的正確方法是什麼。謝謝。
@interface ClassA()
@property (nonatomic, strong) SubView1 *sub1;
@property (nonatomic, strong) SubView2 *sub2;
@end
@implementation ClassA
//this is called initially with no frame
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
sub1 = [[SubView1 alloc] init];
sub1.translatesAutoresizingMaskIntoConstraints = NO;
[self addSubView:sub1];
//Same for sub2
}
return self;
}
- (void)layoutSubViews {
[super layoutSubViews];
}
- (void)updateConstraints {
[super updateConstraints];
//sub1 and sub2 constraints
}
你可以用約束的子視圖顯示視圖應該是什麼樣子嗎?即應該如何佈置子視圖等... – Fogmeister