Как разместить UIView?

Я потратил пару часов, пытаясь позиционировать UIView и в конце концов понял, что мне нужно изменить рамочку представлений. Поэтому я добавил метод setPosition для подкласса UIViewController, как этот

- (void) setPosition:(CGPoint)position
{

    CGRect newFrame = self.view.frame;
    newFrame.origin.x = position.x;
    newFrame.origin.y = position.y;
    self.view.frame = newFrame;

}

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

Является ли этот метод ОК или я делаю то, что я не должен делать... по какой-то причине?

Ответ 1

Копирование, изменение и установка кадра снова, как вы это сделали, как это делается вообще. Это также можно сделать, создав прямоугольник и установив его непосредственно:

UIView.frame = CGRectMake(50,50,50,50);//x,y,w,h

Выполнение этого в блоке анимации будет анимировать эти изменения.

Альтернативно вы можете установить точку обзора с помощью:

UIView.center = CGPointMake(50,50);

Ответ 2

Другой способ:

CGPoint position = CGPointMake(100,30);
[self setFrame:(CGRect){.origin = position,.size = self.frame.size}];

Это я сохраняю параметры размера и изменяю только начало.