UIScrollView avec iOS Auto Contraintes de Mise en forme: Problème de taille pour les sous-vues

Je suis en train de générer une vue dans le code. Voici la hiérarchie de mon point de vue de l'objet

  • UIScrollView
    • UIView
      • UIButton

La ScrollView doit être de la même taille que la fenêtre.
Le bouton doit être aussi grand que possible.
Je suis sous iOS mise en page automatique, de sorte que la contrainte de chaînes de caractères pour l'ensemble de mes objets ressembler à ceci

H:|[object]|
V:|[object]|

J'ai également défini translatesAutoresizingMaskIntoConstraints à NO pour chaque objet.

Le problème est que le bouton n'obtient que le bouton par défaut de la taille. Sa vue parent de l'objet (UIView) n'obtient que la taille de ses sous-vues besoin.

UIScrollView avec iOS Auto Contraintes de Mise en forme: Problème de taille pour les sous-vues

rouge: UIScrollView /jaune: UIView

Comment puis-je la force de ces points de vue à être aussi grand que la scrollView?

Lorsque j'utilise une UIView au lieu de th UIScrollView tout fonctionne très bien...

Voici un 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;

    }

Mise à JOUR:
Je ne sais vraiment pas, pourquoi ce qui se passe. Si vous définissez le point de vue de l'IB, raccorder les prises, et instancier les afficher dans le code, la scrollview se comporte comme un mode normal (qui rebondit à la verticale). Son contentSize n'est pas calculée correctement. Plus ici. Mais comment le faire correctement?

C'est une question assez compliquée solution juste pour montrer un bouton plein écran. Heureusement, j'ai répondu à la question technique, mais je ne suis toujours pas pourquoi vous le faites de cette façon.
Cessez de mettre votre grâce dans les postes les signatures n'ont pas leur place ici. Merci!

OriginalL'auteur Chrizzor | 2013-05-08