2013-03-26 26 views
0

我有我的iOS應用奠定了在下面的圖表爲主,這是如下的頁面。iOS的編程方式改變的UIView佈局

  • 深灰色框=導航欄
  • 淺灰色框=的UIView(用於演示,用一些漂亮的陰影效果等)
  • 黑色邊框= UIView的(再次,具有很好的陰影,不同的背景顏色等)
  • 2文本字段
  • 粉紅盒=另一視圖的事件後顯示。

layout

目前,我鋪設的一切與initWithFrame,並明確設置每個項目的框架,這是我所知道的是可能不是很大(我是新的iOS開發,那麼請點我在正確的方向)。

什麼,我試圖acheive的是,當進入到第二個文本字段中某些文本的粉紅色框來顯示,而superviews正確應對和佈局很好地圍繞新領域。

我與事件本身沒有問題,我可以easliy只是改變各的UIView的框架反過來,但我覺得這是不對的,並會喜歡一些指針。我最終也喜歡粉紅色的盒子進行動畫製作,因此包含的視圖可以用它來製作動畫。

我希望我已經徹底地解釋自己。非常感謝

+1

你讀過了嗎?[查看iOS編程指南](http://developer.apple.com/library/ios/#documentation/windowsviews/conceptual/viewpg_iphoneos/CreatingViews/CreatingViews.html)?較新的方法是「使用自動調整規則自動處理佈局更改」,通用是「手動調整視圖佈局」。 – 2013-03-26 22:23:04

+0

你應該在你的UIView子類中實現layoutSubviews,並在那裏設置視圖框架 – Felix 2013-03-26 22:23:10

+0

Thanks @ A-Live,該文檔確實有幫助。我用autoresizesSubviews = YES對它進行排序! – Leon 2013-03-26 23:40:30

回答

0

如果您有事件觸發,然後在後面運行動畫,那是非常簡單的事情。

- (void)myEventMethod:(id)sender { 
    // Do your event stuff here 
    // Animate the pink box into view 
    // The below assumes the pink box is hidden behind the blackView and you'd like to drop it down 44 pixels over 0.3 seconds - hopefully correct - haven't tested 
    // need to be careful as it'll move down 44px every time myEventMethod: is triggered 
    [UIView animateWithDuration:0.3 
         delay:0.0 
         options:UIViewAnimationOptionCurveEaseIn 
        animations:^{ 
        CGRect pinkboxEndFrame = CGRectMake(self.blackView.frame.origin.x, self.blackView.frame.origin.y + 44, self.pinkbox.frame.size.width, self.pinkbox.frame.size.height); 
        [self.pinkbox setFrame:pinkboxEndFrame]; 
        } 
        completion:nil]; 

} 

只需更新上面的任何其他動畫就可以對其他視圖進行上述操作。

有關動畫的觀點,你可以檢查出從蘋果View Programming Guide更多信息。