UITextView
のsuperView
はUIView
のUIViewController
インスタンス内にあるプレーンです。xcode/iOS:ビューを満たすために自動サイズ設定 - 明示的なフレームサイズは必須ですか?
UITextView
は、autoresizingMask
とautoresizesSubviews
というAPI指定のプロパティを使用することでこれを行うことはできないようです。ここに示すようにこれらを設定すると何も起こりません。 superView
が画面いっぱいになっても、UITextView
は小さいままです。
// 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];
私はその「.view」プロパティを置き換え、ビューコントローラ内部の私自身の見解をインスタンス化する場合は、その後、すべてが期待どおりに動作し、TextViewには、そのスーパーを埋める:
// 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];
私は」これらの初期化子/メソッドのすべての内側の両方のコードの塊を試みたが、同じような状況は、すべての場合に発生しまし:
-(id)init;
-(id)initWithFrame:(CGRect)frame;
-(void)viewDidLoad;
私は実感しての「.view」を再インスタンスは醜いです、誰かが私が間違っていることを説明することはできますか?最初のフレーム設定コードをUIViewController
に設定してUITextView
のサイズを変更し、その後autoresizing
を希望どおりに動作させることで問題を解決できると私は推測しました。
-(void)viewDidLoad {
textView.frame = self.view.frame;
}
...一見view.frameこの段階で設定されていない、それは定義されたその「.sizeの価値観を持っていないので、再びTextViewには小さいまま。
私は何をしたいのですか?スーパービューを埋めるには、フルスクリーンのサイズをUITextView:initWithFrame
で明示的に指定する必要がありますか?
ご提供いただけるアドバイスに感謝します。
あなた 'init'前にない' autorelease'を行います。正しい順序は '... alloc] init] autorelease]'です。 'UIView'はうまくいくはずですが、' autorelease'と 'init'を間違った順序で使うと' NSString'や他のクラスクラスタが漏れてしまいます。あなたの本当の質問を助けることができないため、申し訳ありません。 – Yuji
ありがとう、ゆず、私はチップを感謝します - 私が気づいていなかった何か! – KomodoDave