1

私はオブジェクティブ C プログラミングの初心者なので、この質問に些細な答えがあればすみません。画面サイズよりも大きい UIScrollview を作成したかったのです。そのメイン ビュー内にすべてのサブビューを適切に配置できるようにするために、この投稿で提案されているトリックを試しました。この大きな UIScrollView には、ToolbarView、UITextView、UIButtons、コンテナ ビューなど、いくつかのサブビューがあります。起動時にsetupView、実際の画面サイズに基づいてテキストビューのフレーム サイズを更新し始めます。別の nib ファイルで問題なくこれを行うことができましたが、ストーリーボードでこれを試みると、奇妙なことが起こります: UITextView ( paperlist) が初期化され、テキストがそれに設定されます。ただし、フレーム サイズを取得しようとすると、サイズCGRectがゼロになります。

以下に、私が書いたコードのスニペットを示します。

- (void)viewWillAppear:(BOOL)animated
{
[super viewDidLoad];
[self setupView];
// Do any additional setup after loading the view.
}


#pragma mark update the view
- (void)setupView {
// first update the paperlist height in function of the screen size of the device used
CGFloat statusBarHeight = [[UIApplication sharedApplication] statusBarFrame].size.height;

CGRect newMainFrame = self.view.frame;
CGRect newPaperlistFrame = self.paperlist.frame;
newPaperlistFrame.size.height = [UIScreen mainScreen].bounds.size.height - KEYBOARD_LOWERBORDER - self.mainToolbar.bounds.size.height - statusBarHeight;

newMainFrame.size.height = self.mainToolbar.bounds.size.height + newPaperlistFrame.size.height + self.fullKeyboardView.frame.size.height;

self.view.frame = newMainFrame;
self.paperlist.frame = newPaperlistFrame;
}

誰か助けてくれませんか??

前もって感謝します!

ジュリアン

4

1 に答える 1

1

これはおそらく、viewWillAppear でサブビュー フレームがまだ完全に初期化されていないためです。代わりに、viewController のこのメソッドでメソッドを呼び出してみてください。

-(void)viewDidLayoutSubviews
{
    [super viewDidLayoutSubviews];
    [self setupView];
}

詳細については、こちらを参照してください:フレーム 0,0,0,0 で初期化されたストーリーボードで作成された ScrollView

于 2013-08-04T19:17:13.523 に答える