Как установить текстовое поле для фиксированного левого поля и гибкого правого поля, используя маску автоматического изменения размера программно

Я хочу, чтобы мое текстовое поле имело фиксированное левое поле и гибкое правое поле во всех ориентациях. Левое фиксированное поле работает хорошо, но правое гибкое поле работает неправильно. Вот мой код

tf.frame=CGRectMake(startX, startY, [UIScreen mainScreen].bounds.size.width-40, 44);
[tf setAutoresizingMask:UIViewAutoresizingFlexibleWidth];

Проблема в том, что когда я использую UIViewAutoresizingFlexibleWidth, он не учитывает зазор в 40 пикселей, который я предоставляю для настройки ширины текстового поля, а текстовое поле принимает полную ширину экрана в качестве своих размеров.


person ravinder singh    schedule 07.12.2015    source источник
comment
Всегда устанавливайте рамку представления на основе границ его родителя. Не ориентируйтесь на размер экрана.   -  person rmaddy    schedule 07.12.2015


Ответы (1)


Если вам нужно гибкое правое поле, установите маску таким образом:

tf.autoresizingMask = UIViewAutoresizingFlexibleRightMargin;

Но я подозреваю, что у вас есть другие проблемы. Вы устанавливаете границы текстовых полей в зависимости от размера основного экрана. Размер основного экрана может не иметь никакого отношения к размеру суперпредставления текстового поля, в зависимости от того, когда выполняется этот код.

person rob mayoff    schedule 07.12.2015
comment
Представление имеет гибкое правое поле по умолчанию, а также фиксированное левое поле и фиксированную ширину. - person rmaddy; 07.12.2015
comment
спасибо @rmaddy ... Я исправил это, установив рамку моего текстового поля на основе ширины scrollView (superview), и это сработало .. вы, ребята, сэкономили мне много времени .. - person ravinder singh; 07.12.2015