Изменение CGRectMake (x, x, x, x) на другое местоположение, например (y, y, y, y) - PullRequest
5 голосов
/ 08 июля 2011

Я поместил кнопку в моем виде, используя 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];

Ответы [ 3 ]

14 голосов
/ 08 июля 2011

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

lblDate.frame = CGRectMake(x,y,width,height);
0 голосов
/ 08 июля 2011

Как указано в справочнике классов UIView .

рама

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

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

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

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

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

0 голосов
/ 08 июля 2011

lblDate.frame = newRect

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

...