Cocoa touch 如何定位UIView?

Cocoa touch 如何定位UIView?,cocoa-touch,uiview,uiviewcontroller,Cocoa Touch,Uiview,Uiviewcontroller,我花了几个小时尝试定位UIView,最终发现需要修改views框架。因此,我向UIViewController子类添加了一个“setPosition”方法,如下所示 - (void) setPosition:(CGPoint)position { CGRect newFrame = self.view.frame; newFrame.origin.x = position.x; newFrame.origin.y = position.y; self.view.

我花了几个小时尝试定位UIView,最终发现需要修改views框架。因此,我向UIViewController子类添加了一个“setPosition”方法,如下所示

- (void) setPosition:(CGPoint)position
{

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

}
然而,这看起来很简单,我不明白为什么UIViews还没有这个方法,这让我觉得这可能不是正确的方法。这就是我的问题


这个方法行吗,还是我做了一些我不应该做的事情。。。出于某种原因?

复制、修改和再次设置帧,就像您在这里所做的那样,通常是这样做的。这也可以通过创建一个rect并直接设置它来实现:

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

在动画块中执行此操作将设置这些更改的动画

也可以使用以下选项设置视图中心点:

UIView.center=CGPointMake(50,50)

其他方式:

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

这意味着我只保存大小参数并更改原点。

如果您有IBOutlets的引用,但希望放置只能通过编程创建的元素,我将创建一个UIView(myFrame)用作框架,然后创建MyCustomView.frame=[myFrame bounds],并将MyCustomView添加到主视图容器中