Ich versuche, eine Ansicht in Code zu generieren. Hier ist die Hierachie meiner Ansicht ObjektUIScrollView mit iOS Auto Layout Einschränkungen: Falsche Größe für Subviews
- UIScrollView
- UIView
- UIButton
- UIView
Die Scroll sollte die gleiche Größe wie die Fenster sein. Der Knopf sollte so groß wie möglich sein. Ich bin mit iOS Auto-Layout, so dass die Constraint-Strings für alle meine Objekte sehen aus wie dieses
H:|[object]|
V:|[object]|
ich auch translatesAutoresizingMaskIntoConstraints
-NO
für jedes Objekt festgelegt haben.
Das Problem ist, dass die Schaltfläche nur die Standardgröße der Schaltfläche erhält. Das übergeordnete Ansichtsobjekt (UIView) erhält nur die Größe, die seine Teilansichten benötigen.
rot: UIScrollView/gelb: UIView
Wie kann ich zwingen, diese Ansichten so groß wie die Scrollview zu sein?
Wenn ich eine UIView statt verwenden th UIScrollView alles funktioniert super ...
Hier einige Code:
- (void) viewDidLoad {
[super viewDidLoad];
// SCROLL VIEW
UIScrollView* scrollView = [UIScrollView new];
scrollView.backgroundColor=[UIColor redColor];
scrollView.translatesAutoresizingMaskIntoConstraints = NO;
//CONTAINER VIEW
UIView *containerView = [UIView new];
containerView.translatesAutoresizingMaskIntoConstraints = NO;
containerView.backgroundColor = [UIColor yellowColor];
[scrollView addSubview:containerView];
// CONSTRAINTS SCROLL VIEW - CONTAINER VIEW
[scrollView addConstraints:
[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[containerView]|"
options:0 metrics:nil
views:@{@"containerView":containerView}]];
[scrollView addConstraints:
[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[containerView]|"
options:0 metrics:nil
views:@{@"containerView":containerView}]];
// BUTTON
UIButton* button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button.translatesAutoresizingMaskIntoConstraints = NO;
[button setTitle:@"I'm way to small" forState:UIControlStateNormal];
[containerView addSubview:button];
// CONSTRAINTS CONTAINER VIEW - BUTTON
[containerView addConstraints:
[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[button]|"
options:0 metrics:nil
views:@{@"button":button}]];
[containerView addConstraints:
[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[button]|"
options:0 metrics:nil
views:@{@"button":button}]];
self.view = scrollView;
}
UPDATE: Ich weiß nicht wirklich, warum dies geschieht . Wenn Sie die Ansicht in IB einrichten, die Ausgänge verbinden und die Ansicht in Code instanziieren, verhält sich die Bildlaufansicht wie eine normale Ansicht (die vertikal springt). Seine contentSize wird nicht korrekt berechnet. Mehr here. Aber wie macht man das richtig?
Dies ist eine ziemlich komplizierte Lösung, nur um eine Vollbild-Schaltfläche anzuzeigen. Hoffentlich habe ich die technische Frage beantwortet, aber ich weiß immer noch nicht, warum du es so machst. – Rob
Bitte hör auf deinen Dank in Beiträge - Signaturen gehören nicht hierher. Vielen Dank! – Undo