Je voudrais un UITextView
pour remplir son superView
qui est un simple UIView
à l'intérieur d'un UIViewController
instance.
Il semble que je ne puisse pas faire le UITextView
le font uniquement en utilisant les propriétés spécifiées par l'API de l'interface utilisateur. autoresizingMask
y autoresizesSubviews
. Le réglage de ces paramètres, tel qu'illustré ici, n'a aucun effet. UITextView
reste faible même si son 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 le textView remplit sa super-vue :
// 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 initialisateurs/méthodes, et la même situation se produit dans tous les cas :
-(id)init;
-(id)initWithFrame:(CGRect)frame;
-(void)viewDidLoad;
Je me rends compte que le fait de réinstaurer le ".view" de l'image de marque de l UIViewController
est moche, quelqu'un peut-il m'expliquer ce que je fais mal ? J'ai supposé que je pourrais surmonter le problème en ayant un code initial de réglage de la trame dans mon fichier UIViewController
pour redimensionner le 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 ses valeurs '.size' définies, donc une fois de plus le textView reste petit.
Quelle est la meilleure façon d'obtenir ce que je veux ? Dois-je spécifier explicitement les dimensions plein écran par l'intermédiaire de UITextView:initWithFrame
pour qu'il remplisse sa vue supérieure ?
Je vous serais reconnaissant de tout conseil que vous pourriez me donner.
1 votes
Ne fais pas ça.
autorelease
avant que vousinit
. L'ordre correct est ` ... alloc] init] autorelease].
UIView` devrait convenir, maisNSString
et d'autres clusters de classes fuiront si vous utilisez lesautorelease
yinit
dans le mauvais ordre. Désolé de ne pas être en mesure de répondre à votre vraie question, cependant.1 votes
Merci Yuji, j'apprécie le conseil - quelque chose dont je n'étais pas conscient !