2015-05-04 3 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 idth, self.myButton.frame.size.height * scrOpt) ' –

+1

Если вы используете автоматический макет, вам нужно обновить его ограничение по высоте, иначе обновите его фрейм. –

+0

См. Объяснение здесь http://stackoverflow.com/a/16406097/790842. Как сказал @YogeshSuthar, вы должны использовать AutoLayout, а в AutoLayout смена кадров не работает, вам нужно работать с ограничениями. – iphonic

ответ

5

Причина, по которой вы не видите изменений, может быть связана с тем, что вы используете AutoLayout, а кнопка имеет некоторые ограничения, применяемые к ней, и вам нужно изменить ограничение по высоте, чтобы выполнить то, что вы хотите.

Edited: Изменение свойств кадра непосредственно представляется возможным в Swift, но не было возможности в Objective C.

+1

'frame' не является свойством только для чтения, и вы * можете * присваивать' 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)); 

Edited проверить это и увидеть, что для печати NSLog

+0

Это то, что я пытался раньше, но ничего не изменилось. – Cuno

+0

@Cuno проверить измененный ответ –

Смежные вопросы