2014-01-12 46 views
1

我想有一個視圖,擴大到適合屏幕的其餘高度。問題是,我試圖在iPhone 4和iPhone 5的佈局上做到這一點。使CGRectMake框架堅持底部

我想要做的是讓我的CGRectMake代碼,以便框架錨定到主視圖的底部。有沒有辦法做這樣的事情?謝謝!

我的繼承人webView的CGRectMake代碼:

webView.frame = CGRectMake(0, 167, 320, 313); 
+3

使用自動佈局時。或者,如果你真的想堅持手動框架計算,看看CGRectDivide()並使用視圖控制器視圖的邊界。 – jrturton

回答

2

嘗試在此處使用自動佈局以避免硬編碼。

webView.autoresizingMask = UIViewAutoresizingFlexibleHeight; 
webView.translatesAutoresizingMaskIntoConstraints = NO; 
[self.view addSubview:webView]; 

NSDictionary *viewsDict = @{@"webView" : webView}; 
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-167-[webView]-0-|" 
        options:0 metrics:nil views:viewsDict]]; 
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[webView]-0-|" 
        options:0 metrics:nil views:viewsDict]]; 

您也將避免佈局問題進行自轉

0

可以使各方面的意見框架的引用來做到這一點。

webView.frame = CGRectMake(0, 167, 320, self.view.frame.size.height - 167); 
0

那麼如果你有一個固定的起始高度是太容易了:

int startHeight = 167; 
int frameHeight = self.view.frame.size.height - startHeight; 
webView.frame = CGRectMake(0, startHeight, 320, frameHeight); 

這樣做是獲得視圖的高度,然後將其扣除啓動窗口的偏移量。 爲了達到此目的,代碼需要在UIWindow上顯示視圖後執行,這意味着您需要在viewDidAppear而不是viewDidLoad中執行它。

0

如果您放棄直接設置框架矩形並擁抱自動佈局,這將很容易。