Je voudrais qu'une UITextView
remplisse sa superView
, qui est une simple UIView
dans une instance UIViewController
.
Il semble que je ne puisse pas faire le UITextView
faire cela uniquement en utilisant les propriétés spécifiées par l'API de autoresizingMask
et autoresizesSubviews
. Le réglage de ceux-ci comme indiqué ici ne fait rien; la UITextView
reste petite même si sa superView
remplit l'écran.
// use existing instantiated view inside view controller;
// ensure autosizing enabled
self.view.autoresizesSubviews = YES;
self.view.autoresizingMask = UIViewAutoresizingFlexibleHeight|
UIViewAutoresizingFlexibleWidth;
// create textview
textView = [[[UITextView alloc] autorelease] initWithFrame:CGRectMake(0, 0, 1, 1)];
// enable textview autoresizing
[textView setAutoresizingMask:UIViewAutoresizingFlexibleWidth|
UIViewAutoresizingFlexibleHeight];
// add textview to view
[self.view addSubview:textView];
Cependant, si j'instancie ma propre vue à l'intérieur du contrôleur de vue en remplaçant sa propriété '.view', tout fonctionne comme prévu et textView remplit sa vue d'ensemble:
// reinstantiate view inside view controller
self.view = [[UIView alloc]init];
// create textview
textView = [[[UITextView alloc] autorelease] initWithFrame:CGRectMake(0, 0, 1, 1)];
// enable textview autoresizing
[textView setAutoresizingMask:UIViewAutoresizingFlexibleWidth|
UIViewAutoresizingFlexibleHeight];
// add textview to view
[self.view addSubview:textView];
J'ai essayé les deux morceaux de code dans tous ces initialiseurs/méthodes, et la même situation se présente dans tous les cas:
-(id)init;
-(id)initWithFrame:(CGRect)frame;
-(void)viewDidLoad;
Je me rends compte que la re-vérification de la 'vision' de la UIViewController
est fugue, quelqu'un peut-il expliquer ce que je fais mal? J'ai supposé que je pouvais résoudre le problème en ayant un code de définition de trame initial dans ma UIViewController
pour redimensionner la UITextView
une fois, et par la suite autoresizing
fonctionnerait comme souhaité.
-(void)viewDidLoad {
textView.frame = self.view.frame;
}
... mais apparemment, le view.frame n'est pas configuré à ce stade, il n'a pas défini ses valeurs '.size', donc encore une fois, textView reste petit.
Quelle est la bonne façon de réaliser ce que je veux? Dois-je spécifier explicitement les dimensions du plein écran via UITextView:initWithFrame
pour qu’il remplisse son aperçu?
Je serais reconnaissant pour tout conseil que vous pouvez offrir.
Le redimensionnement automatique ne signifie pas que la sous-vue prendra la taille de son aperçu. Cela signifie simplement qu'il sera redimensionné par rapport au changement de taille de son aperçu lorsque ses limites changent. Au début, vous devez donc définir la taille correcte de la sous-vue. Le masque de redimensionnement automatique traitera ensuite des changements de taille dans le futur.
C'est tout ce dont vous avez besoin:
textView = [[[UITextView alloc] autorelease] initWithFrame:self.view.bounds];
[textView setAutoresizingMask:UIViewAutoresizingFlexibleWidth|
UIViewAutoresizingFlexibleHeight];
Et ici Swift 3 solution:
myView.autoresizingMask = [.flexibleWidth, .flexibleHeight]