2015-05-04 35 views
3

根據屏幕的高度,我想調整視圖中按鈕的高度。在Swift中最簡單的方法是什麼?如何用Swift更改按鈕的高度?

我嘗試了這種方式,並與CGRectMake()但什麼都沒有改變:

self.myButton.frame.size.height = self.myButton.frame.size.height*scrOpt 

我如何「更新」的框架?

+0

'self.myButton.frame = CGRectMake(self.myButton.frame.origin.x,self.myButton.frame.origin.y,self.myButton .frame..size.w寬度,self.myButton.frame.size.height * scrOpt)' –

+1

如果您使用自動佈局,則需要更新其高度約束,否則更新其框架。 –

+0

請參閱http://stackoverflow.com/a/16406097/790842。正如@YogeshSuthar所說的,你必須使用AutoLayout,而在AutoLayout中更改框架不起作用,你需要處理約束。 – iphonic

回答

5

您看不到更改的原因可能是因爲您使用的是AutoLayout,並且該按鈕應用了一些約束,您需要更改高度約束以完成所需操作。

編輯:更改相框性能直接似乎是可能的,但斯威夫特是不可能的目的C.

+1

'框架'不是隻讀屬性,你*可以*分配給'self.myButton.frame.size.height'在Swift中...... –

+0

是的,這似乎是問題 - 我有AutoLayout在一般情況下工作良好),並嘗試改變這個愚蠢的按鈕,現在在代碼中......嗯......: -/Thx! – Cuno

+0

你是對的馬丁。我已經習慣了Objective C中的那個。我編輯了我的答案。 – pteofil

0

如果您正在使用自動佈局,則需要更新它的高度約束,否則更新其框架

NSLog(@"%@",NSStringFromCGRect(self.myButton.frame)); 

    NSLog(@"%f",scrOpt); 

    self.myButton.frame = CGRectMake(self.myButton.frame.origin.x, self.myButton.frame.origin.y, self.myButton.frame.size.width, self.myButton.frame.size.height*scrOpt) 

    NSLog(@"%@",NSStringFromCGRect(self.myButton.frame)); 

編輯檢查這一點,看看是打印NSLog

+0

這是我之前嘗試的,但沒有任何改變。 – Cuno

+0

@Cuno檢查我編輯的答案 –