如何定位一个UIView?

10

我花了几个小时来定位一个UIView的位置,最终发现我需要修改视图的frame。因此,我像这样在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;

}

不过,这个方法看起来很简单,我不明白为什么UIView没有这个方法,这让我觉得这可能不是正确的方法。所以我的问题是...

这个方法是否可行,或者说我做了一些不应该做的事情...出于某种原因?

2个回答

12

复制、修改并重新设置框架,就像你在这里所做的一样,通常是这样完成的。 这也可以通过创建一个矩形并直接设置它来完成:

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

在动画块中执行此操作将会使这些更改发生动画效果。

或者,您也可以使用以下方法设置视图的中心点:

UIView.center = CGPointMake(50,50);


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

2
另一种方式:
CGPoint position = CGPointMake(100,30);
[self setFrame:(CGRect){.origin = position,.size = self.frame.size}];

我保存尺寸参数并仅更改原点。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接