1

ビューのフレームが自動変更されたのはなぜですか?

このコードを参照してください:

- (void)loadView{
    UIScrollView *sv = [[UIScrollView alloc] initWithFrame:CGRectMake(-10,0,340,480)];
    self.view = sv;
    NSLog(@"sv frame = %@", NSStringFromCGRect(self.view))
}

- (void)viewWillAppear{
  NSLog(@"view frame = %@", NSStringFromCGRect(self.view));
}

私のデモ出力: sv frame = {{-10, 0}, {340, 480}}

ビュー フレーム = {{0, 0}, {320, 480}}

ビュー フレーム = {{-10, 0}, {340, 480}}

しかし、PhotoScroller のデモ (2010 WWDC 104) では正しいです。とても奇妙です。

4

3 に答える 3

2

両方の方法を次のように変更します。

- (void)loadView{
   UIScrollView *sv = [[UIScrollView alloc] initWithFrame:CGRectZero];
   self.view = sv;
}

- (void)viewWillAppear:(BOOL)animated {
   self.view.frame = CGRectMake(-10,0,340,480);
}

編集: ジオメトリは、少なくとものイベント ライフサイクルで設定する必要がviewWillAppear:あります。UIViewControllerマスクの自動サイズ変更もジオメトリを変更する可能性があります。

于 2012-07-03T06:54:11.197 に答える
1
- (void)loadView
{    
    UISCrollView *scrollView = [[UIScrollView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
    self.view = scrollView;
}
于 2012-07-03T14:35:50.677 に答える
-1

これを試して:

- (void)loadView{
    UIView *view=[[UIView alloc] initWithFrame:CGRectMake(0,0,320,480)];
    UIScrollView *sv = [[UIScrollView alloc] initWithFrame:CGRectMake(-10,0,340,480)];
    [view addSubview:sv];
    sv.autoresizingMak=UIViewAutoresizingMaskFlexibleWidth|UIViewAutoresizingMaskFlexibleHeight;
    self.view = view;
}
于 2012-07-03T11:06:08.277 に答える