아래의 프레임 세트가없는 ClassA가 처음에 초기화되는 클래스가 있습니다. ClassA의 인스턴스는 autolayout으로 설정되지 않습니다. 프레임은 나중에 수동으로 설정됩니다. 그러나 ClassA의 하위보기가 자동으로 배치되기를 원합니다. 문제는 내가 이것을 할 올바른 방법을 찾을 수 없다는 것입니다. layoutSubview가 호출되기 전에 (프레임이 설정되기 전에) 제약 조건을 설정하려고하면 제약 조건이 유효성을 검사하지 않습니다. layoutSubviews에서 Super를 호출 한 후 설정을 시도하면iOS - layoutSubviews의 서브 뷰에서 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