2010-12-10 36 views
10

我花了幾個小時試圖定位一個UIView,並最終發現我需要修改視圖框架。所以我加了一個「setPosition兩種」方法的UIViewController子類這樣如何定位UIView?

- (void) setPosition:(CGPoint)position 
{ 

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

} 

然而,這似乎很簡單,我不明白爲什麼UIViews沒有這個方法已經,這讓我覺得這可能不是做正確的做法。所以這是我的問題...

這種方法是好還是我正在做的事情,我不應該這樣做......出於某種原因?

回答

12

複製,修改和設置框架,就像你在這裏完成的一樣,是通常如何做到這一點。這也可以通過創建一個矩形,並直接進行設置來實現:

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

在動畫塊這樣做將動畫這些變化。

Alternitively你可以設置一個觀點中心點有:

UIView.center = CGPointMake(50,50);

+0

如果您有IBOutlets的引用,但又想放置一個只能以編程方式創建的元素,則創建一個用作框架的UIView(myFrame),然後MyCustomView.frame = [myFrame bounds]和add MyCustomView到主視圖容器 – jay 2014-07-10 22:59:38

2

其他方式:

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

這是我救的大小參數,只改變原產地。