Pourquoi la size de la view est (0,0) ?
Bonjour,
J'ai un problème avec une vue (issue d'un VC) que j'ajoute à une autre vue. Après l'ajout, cette vue prend une size nulle. Je ne comprends pas pourquoi et j'aimerais le savoir. Je sais (et j'ai testé) que si je mets des contraintes, ça marchera.
Mais, dans ce cas, pourquoi ça ne marche pas ?
Merci !
• Voici le code de View Controller principal :
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIView *mainView;
@property (nonatomic, strong, readwrite) ColorViewController * colorVC ;
@end
@implementation ViewController
+ (void)fillView:(UIView *)bigView
withView:(UIView *)view
{
view.translatesAutoresizingMaskIntoConstraints = NO ;
// view.translatesAutoresizingMaskIntoConstraints = YES ;
CGRect frame = bigView.frame ;
frame.origin = CGPointZero ;
view.frame = frame ;
[bigView addSubview:view] ;
}
- (void)viewDidLoad
{
[super viewDidLoad];
self.colorVC = [ColorViewController new] ;
UIView * newView = [UIView new] ;
newView.backgroundColor = [UIColor blackColor] ;
[ViewController fillView:self.mainView
withView:self.colorVC.view] ;
}
@end
• Voici le storyboard associé
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Pourquoi pas assigné le bounds au frame ?
Oui ! Je n'ai jamais fait ça mais ça économise quelques ligne de codes un peu répétitives !
Comme tu t'en doutais, ça ne règle pas le problème...
Quand j'essaie chez moi, je vois un rectangle rouge sur un fond blanc, sans le moindre bouton à presser – c'est normal ?
Tu es sûr que
est bien l'objet souhaité?
Merci berfis !
Voici un lien avec le projet github https://github.com/colasjojo/ToyProjectForIssueWithSize
Si ça ne bugguait pas, oui tu devrais voir à la place de la vue rouge une vue d'une autre couleur, avec un label dedans...
Pour
oui, c'est bon.
Sinon, il te suffit d'inverser
pour voir le bon comportement !
Suite à la même question posée sur SO, voici les conclusions
que si on ajoute soi-même ses contraintes. Dans mon cas, je pensais que la frame serait suffisante, mais non, il doit y avoir un moteur !
PS : pourquoi quand je crée une liste avec des points, elle n'apparaà®t pas dans mon message ?
Est-ce que tu as essayé d'appeler ton fillView dans le viewWillAppear ou dans le didLayoutSubview ?
@starmendo : merci pour tes idées
- dans viewWillAppear : même comportement non souhaité
- dans viewDidLayoutSubviews : même comportement non souhaité