How to position a UIView?

2019-03-19 02:17发布

I spent a couple of hours trying to position a UIView and eventually figured out that I needed to modify the views frame. So I added a 'setPosition' method to the UIViewController subclass like this

- (void) setPosition:(CGPoint)position
{

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

}

However, that seems so simple that I don't understand why UIViews don't have this method already, which makes me think this might not be the right way to do it. So that's my question...

Is this method OK or am I doing something I shouldn't be doing... for some reason?

2条回答
萌系小妹纸
2楼-- · 2019-03-19 02:52

Copying, Modifying and setting the frame again like you have done here is how this is generally done. This can also be done by creating a rect and setting it directly:

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

Doing this in an animation block will animate these changes.

Alternitively you can set a views Center point with :

UIView.center = CGPointMake(50,50);

查看更多
够拽才男人
3楼-- · 2019-03-19 02:57

Other way:

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

This i save size parameters and change origin only.

查看更多
登录 后发表回答