2013-01-22 33 views
0

我有一個view,其中包含TableView,UIImageUIButtonUIButton在IB中配置,位置如下:self.camButton.frame = CGRectMake(0, 410,127,49);我的問題是當我回彈到第一個ViewController時,UIButton更改了它的位置。在第一次加載時,它的位置很好,但當我回到ViewController時,該按鈕位於視圖中大約20像素的位置。我試圖記錄按鈕的位置,所以我進入viewWillAppearNSLog(@"Bug Fixes: %f",self.camButton.frame.origin.y); NSLog(@"Bug Fixes: %f",self.view.frame.origin.y);但我總是得到410和0的第一次加載和當按鈕錯位。我正在玩View其他ViewControllers的位置(雖然顯示鍵盤例如我推高了view),但我不認爲這是造成它的原因,因爲當我回到第一個位置時,視圖保持在相同的位置ViewController按鈕在返回ViewController時更改位置

+1

您是否在IB佈局上使用約束? – Oritm

+0

我不確定。我如何檢查? – Segev

+0

我沒有使用AutoLayout – Segev

回答

0

enter image description here

你需要設置autoresizingMask

self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 

更多信息,請查看本link

0

如果啓用autoLayout,則查找約束。

第二種方法是使用initWithFrame:每當你回到那個視圖。

+0

我沒有使用autoLayout。我如何使用initWithFrame? – Segev

+0

用NSRect創建一個框架,給出x,y,高度,寬度...並將其分配給viewDidLoad方法中的按鈕。 –

0

把你的代碼

self.camButton.frame = CGRectMake(0, 410,127,49); 

-(void)viewWillAppear:(BOOL)animated

+0

試過了。不起作用。控制檯已經告訴我,這是按鈕的位置,當它不是。 – Segev

+0

你正在做一些事情,按鈕上的方向變化?如果是的檢查它 – spider1983

0

你在哪裏設置按鈕的框架(loadview,viewwillappear等......),你在哪裏分配Button?你在dealloc中刪除按鈕嗎?嘗試設置UIViewAutoresizingFlexibleTopMaring | UIViewAutoresizingFlexibleBottomMargin。

+0

我不分配按鈕。我只是將它放在IB中並進行配置。然後用代碼改變位置。 – Segev

+0

好吧,可能來自IB和您的代碼的2個值相差20px。你在哪裏設置框架?如果視圖在彈出之後重新加載並且您的手動CGRectMake沒有被調用,我們發現它,因爲它加載了來自IB的值。 – Fry

+0

不是這樣,IB中的框架在viewController上設置,以避免這種情況。我只設置一次按鈕的位置,並在'viewWillAppear'中檢查它的位置。我不明白控制檯如何告訴我一件事,而視圖告訴我另一件事。 – Segev