我試圖以編程方式更改我的UIView的佈局,而不是使用自動佈局,因爲我正在嘗試爲iOS 4及更高版本部署此應用程序。我基本上將屏幕高度設置爲455(iPhone 5)(我知道實際屏幕尺寸爲568點,但底部有一個標籤欄,因此我認爲IB中顯示的尺寸考慮了這一點)。我記錄了所有按鈕和標籤相對於較長屏幕尺寸的原點,並以編程方式將它們更改爲我更喜歡它們的方式。問題是,一些按鈕和標籤現在正在屏幕上出現,所以我認爲我必須執行某種轉換才能將它們限制在範圍內,但我不確定是什麼。見圖片附後:我和initMethod前以編程方式更改iPhone 5的UIView佈局
圖像被稱爲改變按鈕和標籤的起源 圖片我和initMethod之後被調用,以更改原點 查看XCode中的屬性爲舊屏幕尺寸 這是我希望視圖看起來的方式。我移動了按鈕並記錄了每個按鈕的來源。 我的init方法在viewWillAppear中的圖片。注意標籤的框架是如何爲零的。 這裏是我使用的代碼:
-(void)initView
{
CGRect screenBounds = [[UIScreen mainScreen] bounds];
if (screenBounds.size.height == 480) {
//iphone 4,4s
//done
}else if(screenBounds.size.height == 568) {
//iphone 5
CGRect frame;
//Static Professor label
frame = [staticProfessorLabel frame];
frame.origin.x = 48;
frame.origin.y = 218;
[staticProfessorLabel setFrame:frame];
//Professor Label
frame = [professorLabel frame];
frame.origin.x = 192;
frame.origin.y = 218;
[professorLabel setFrame:frame];
//show button
frame = [showProfessorButton frame];
frame.origin.x = 67;
frame.origin.y = 258;
[showProfessorButton setFrame:frame];
//clear proff button
frame = [clearProfessor frame];
frame.origin.x = 240;
frame.origin.y = 258;
//note label
frame = [bottomNote frame];
frame.origin.x = 160;
frame.origin.y = 310;
[bottomNote setFrame:frame];
//search button
frame = [searchButton frame];
frame.origin.x = 158;
frame.origin.y = 424;
[searchButton setFrame:frame];
//spinner
frame = [actIndicator frame];
frame.origin.x = 266;
frame.origin.y = 424;
[actIndicator setFrame:frame];
}
}
此外,我在viewDidAppear方法調用這個,因爲當我把它在viewDidLoad中,沒有一個按鈕和標籤的給我一個有效的框架(我猜他們還沒有初始化)。
您說過要「以編程方式更改我的UIView的佈局,而不是使用自動佈局」,但屏幕截圖顯示您的故事板已打開自動佈局。如果要手動設置幀,則需要將其關閉。如果您不知道如何禁用故事板中的自動佈局,請參閱[此答案](http://stackoverflow.com/a/13201690/77567)。 –
如果您在下面發表評論,我會將您的答案作爲已接受的答案 – kamran619