2013-04-08 24 views
4

工作,這是我使用的代碼:CGRectMake不定製幀viewDidLayoutSubviews

-(void)viewDidLayoutSubviews{ 
    CGSize screenSize = [[UIScreen mainScreen] bounds].size; 

    if (screenSize.height <= 480.0f) { 
     self.img.frame = CGRectMake(21, 20, 280, 275); 
     self.text.frame = CGRectMake(21, 20, 280, 275); 
     self.decrease.frame= CGRectMake(55, 308, 39, 39); 
     self.add.frame = CGRectMake(55, 308, 39, 39); 
     self.increase.frame =CGRectMake(55, 308, 39, 39); 
    } 
    else{ 
     self.img.frame = CGRectMake(21, 20, 280, 400); 
     self.text.frame = CGRectMake(21, 20, 280, 400); 
     self.decrease.frame= CGRectMake(55, 308, 39, 39); 
     self.add.frame = CGRectMake(55, 308, 39, 39); 
    }  
} 

我使用相同的代碼(viewDidLayoutSubviews以外),以改變框架和它完美。 我的問題是,viewDidLayoutSubviews中的代碼不起作用。它不會在加載視圖時更改幀大小或位置。有什麼建議麼?

+0

我不確定,但是一旦創建並加載後,您就無法重新構建視圖。 – 2013-04-08 18:38:41

+0

我不明白,我使用相同的代碼來動畫「文本」UITextView的高度爲例。 – 2013-04-08 18:40:55

+0

你能編輯你的文章來展示你如何執行viewDidLayoutSubviews,因爲它看起來好像沒有被調用。您還應該在其中放置一個NSLog或printF或斷點,以確保它確實如此。 – PappaSmalls 2013-04-08 19:10:44

回答

1

不應該先打電話給[super viewDidLayoutSubviews]嗎?

-(void)viewDidLayoutSubviews{ 
    [super viewDidLayoutSubviews]; 
    CGSize screenSize = [[UIScreen mainScreen] bounds].size; 

    if (screenSize.height <= 480.0f) { 
     self.img.frame = CGRectMake(21, 20, 280, 275); 
     self.text.frame = CGRectMake(21, 20, 280, 275); 
     self.decrease.frame= CGRectMake(55, 308, 39, 39); 
     self.add.frame = CGRectMake(55, 308, 39, 39); 
     self.increase.frame =CGRectMake(55, 308, 39, 39); 
    } 
    else{ 
     self.img.frame = CGRectMake(21, 20, 280, 400); 
     self.text.frame = CGRectMake(21, 20, 280, 400); 
     self.decrease.frame= CGRectMake(55, 308, 39, 39); 
     self.add.frame = CGRectMake(55, 308, 39, 39); 
    }  
} 
+1

這什麼都不做。從文檔:「此方法的默認實現什麼也不做。」 – walkingbrad 2013-09-12 17:59:10