我有一個UITextField,它使用Xcode 6s自動佈局接口,我已設置爲400點的寬度。這在大屏幕設備上看起來很好,但在iPhone 5s上,這些框從包含視圖中消失。什麼是正確的方法來解決這個問題?Xcode 6自動佈局靈活寬度
有沒有一種方法來設置一個約束,如果屏幕比這個大,將使UITextFields的寬度爲400點,或者只是填充容器視圖如果不是,而不是在視圖外部溢出,或者我應該使用大小用於設置UITextField在緊湊視圖上與其父視圖具有相同寬度的類。
我有一個UITextField,它使用Xcode 6s自動佈局接口,我已設置爲400點的寬度。這在大屏幕設備上看起來很好,但在iPhone 5s上,這些框從包含視圖中消失。什麼是正確的方法來解決這個問題?Xcode 6自動佈局靈活寬度
有沒有一種方法來設置一個約束,如果屏幕比這個大,將使UITextFields的寬度爲400點,或者只是填充容器視圖如果不是,而不是在視圖外部溢出,或者我應該使用大小用於設置UITextField在緊湊視圖上與其父視圖具有相同寬度的類。
而不是在UITextField上設置寬度約束,將水平空間約束添加到它的左側和右側。這樣,UITextField將自動調整屏幕大小。
就像Kris說的那樣,設置水平空間約束是開始處理這個問題的好方法。
在回答你關於不想常量「利潤」的評論,你可以做到以下幾點:
IBOutlet
s類型NSLayoutConstraint
(無論是.h還是.m;無關緊要)。IBOutlet
連接到各自的NSLayoutConstraint
s。viewDidLoad
/viewWillAppear:
)中,將約束設置爲所需的值。這聽起來像你主要是想防止跨越整個屏幕在iPad領域,所以你可以做這樣的事情(假設NSLayoutConstraint
s的名爲「textFieldLeft」和「textFieldRight」名爲UITextField
「文本字段「):
- (void)viewDidLoad {
if (UI_USER_INTERFACE_IDIOM == UIUserInterfaceIdiomPad) {
self.textFieldLeft.constant = 50.0f;
self.textFieldRight.constant = 50.0f;
[self.textField layoutIfNeeded];
}
}
我唯一的問題是,像iPad這樣的大屏幕設備我不希望文本視圖佔用整個屏幕,因爲它看起來很傻。 – 2014-10-28 17:51:30
蘋果推薦的方法是爲iphone和ipad製作不同的storyboard/xibs。他們的代碼將被完全共享。 – 2014-10-28 17:52:44
@KrisJurgowski看起來Apple似乎希望將每個尺寸類別的Storyboard文件與不同的實現結合起來。我不確定我是否還在意這種工具/方法,但似乎是未來的潮流。不過,我希望他們能夠更輕鬆地區分設備/屏幕。目前,將iPhone與iPad區分開來相當容易,但將iPhone 4S與iPhone 6 Plus區分開來會造成混淆(至少在肖像模式下)。現在,我與您分開介紹Storyboard,但我認爲這不會被支持的時間更長。 – mbm29414 2014-10-28 17:59:23