Próbuję wygenerować widok w kodzie. Oto hierarchię moim zdaniem obiektuUIScrollView z iOS Auto Layout Ograniczenia: Niewłaściwy rozmiar dla subviews
- UIScrollView
- UIView
- UIButton
- UIView
Scrollview powinien być taki sam rozmiar jak okna. Przycisk powinien być tak duży, jak to możliwe. używam iOS układ automatycznego, więc ciągi ograniczenie dla wszystkich moich obiektów wyglądać następująco
H:|[object]|
V:|[object]|
Ja również ustawić translatesAutoresizingMaskIntoConstraints
do NO
dla każdego obiektu.
Problem polega na tym, że przycisk przyjmuje tylko domyślny rozmiar przycisku. Jego obiekt widoku nadrzędnego (UIView) pobiera tylko rozmiar wymagany przez jego subviews.
czerwono: UIScrollView/żółty: UIView
Jak mogę zmusić te poglądy się być tak duży jak Scrollview?
Kiedy używam UIView zamiast th UIScrollView wszystko działa świetnie ...
Oto niektóre kodu:
- (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: ja naprawdę nie wiem, dlaczego tak się dzieje . Jeśli ustawisz widok w IB, podłącz wyloty i zmodyfikuj widok w kodzie, przewijanie zachowuje się jak normalny widok (który odbija się pionowo). Jego contentSize nie jest obliczany poprawnie. Więcej here. Ale jak to zrobić poprawnie?
To dość skomplikowane rozwiązanie, aby wyświetlić przycisk pełnoekranowy. Mam nadzieję, że odpowiedziałem na techniczne pytanie, ale wciąż nie jestem pewien, dlaczego robisz to w ten sposób. – Rob
Proszę, przestańcie składać podziękowania w wiadomościach - podpisów tu nie ma. Dzięki! – Undo