2013-09-01 153 views
2

我有一個奇怪的問題,當涉及到添加內容到UIScrollView。非常奇怪的UIView位置問題

下面是調用相同方法的結果。左邊的是來自viewDidLoad的調用結果。右側的一個是從觸摸標籤時觸發的自定義方法調用的。

enter image description here

的代碼非常直截了當:

CGRect scrollRect = CGRectMake(0, 64, 320, [[UIScreen mainScreen] bounds].size.height - 49); 
    _containerView = [[UIScrollView alloc] initWithFrame:scrollRect]; 
    _containerView.backgroundColor = [UIColor clearColor]; 

    UILabel *myLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 5, 300, 40)]; 
    myLabel.text = @"my label"; 
    myLabel.textColor = [super colorFromHexString:0x472C37]; 
    myLabel.numberOfLines = 0; 
    [myLabel sizeToFit]; 
    y_offset += myLabel.frame.size.height; 
    [_containerView addSubview:myLabel]; 
    [self.view addSubView:_containerView]; 

我檢查父(self.view)及其座標始終0,0。真的難住這個...

+0

很可能是未指定的自動佈局約束的結果。 –

+2

在'viewWillAppear:'或'viewDidLayoutSubviews'中工作過這段代碼嗎? –

+0

@DavidH Nope,不使用自動佈局。 – Ger

回答

2

viewDidLoad你的subViews組件還沒有完全初始化,所以如果你使用其中一些框架,你會得到一個不希望的結果。 viewDidLayoutSubviews可能是你在找什麼。這是所有子視圖幀都完全初始化的方法。

嘗試在此方法內調用您的代碼,並且您應該得到與單擊按鈕時相同的結果。

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