Изменение CGRectMake (x,x,x,x) на другое место, например (y,y,y,y)

Я разместил кнопку в своем представлении, используя CGRectMake(x,x,x,x), где x, конечно, является местоположением и размером. Когда я поворачиваю вид с помощью -(BOOL)shouldAutoRotate..., я хочу изменить расположение кнопки с центра в портретном режиме на центр в ландшафтном режиме. Кнопка содержит информацию в своей метке, которую устанавливает пользователь, поэтому я НЕ хочу использовать другой вид для альбомной ориентации. Что, если они установят что-то в портретной ориентации и повернут в горизонтальное положение? Они потеряют свои данные. Итак, мой вопрос: как мне переместить то, что было установлено ранее? Смотрите код ниже, я не хочу перераспределять кнопку. Спасибо!

// DATE

lblDate = [[UILabel  alloc] initWithFrame:CGRectMake(x, y, width, height)];

lblDate.text = @"Date:";
lblDate.backgroundColor = [UIColor clearColor];
[contentView addSubview:lblDate];

person Jack Humphries    schedule 08.07.2011    source источник


Ответы (3)


Просто установите кадр равным новому Rect, например.

lblDate.frame = CGRectMake(x,y,width,height);
person George Johnston    schedule 08.07.2011

lblDate.frame = новый прямоугольник

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

person Francisco Ryan Tolmasky I    schedule 08.07.2011

Как указано в ссылка на класс UIView.

рамка

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

@property(nonatomic) CGRect frame Обсуждение Этот прямоугольник определяет размер и положение представления в системе координат его суперпредставления. Вы используете этот прямоугольник во время операций компоновки, чтобы изменить размер и положение вида. Установка этого свойства соответственно изменяет точку, указанную свойством center, и размер прямоугольника границ. Координаты прямоугольника кадра всегда указываются в пунктах.

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

Изменение прямоугольника кадра автоматически повторно отображает приемник без вызова метода drawRect:. Если вы хотите, чтобы метод drawRect: вызывался при изменении прямоугольника рамки, задайте для свойства contentMode значение UIViewContentModeRedraw.

Изменения этого свойства можно анимировать. Однако если свойство преобразования содержит преобразование, отличное от удостоверения, значение свойства фрейма не определено и не должно изменяться. В этом случае вы можете изменить положение представления с помощью свойства center и отрегулировать размер с помощью свойства bounds.

person Perception    schedule 08.07.2011