自动更改视图的布局

时间:2011-02-04 13:01:15

标签: iphone cocoa-touch layout uiview

当隐藏附近的元素(UIImageView)时,有没有办法自动调整元素(例如WebView)的大小?

我有一个普通的UIView,其中有一个显示HTML的WebView,但在某些情况下,需要一个上面的图像。所以我将图像放在WebView上方,但是当这个图像不存在时,webview也会占用ImageView的空间,否则会有一个白色条。

另一个选择是将它放在Webview上,但我认为无论如何都没有文本在图像周围流动。

有人建议整理解决方案吗? 提前感谢一百万!

3 个答案:

答案 0 :(得分:2)

我学到的一个方便的技巧是依靠CGRectDivide() - 当然你必须编写自己的layoutSubviews方法,但这并不太难:

-(void)layoutSubviews
{
    CGRect bounds = self.bounds ;
    if ( !self.imageView.hidden )
    {
        CGRect slice ;
        CGRectDivide( bounds, & slice, & bounds, IMAGE_VIEW_HEIGHT, CGRectMinYEdge ) ;
        self.imageView.frame = slice ;
    }

    // bounds here contains the remaining layout space with or without the image view
    self.webView.frame = bounds ;
}

答案 1 :(得分:0)

为什么仅使用显示或隐藏图像的相同方法调整WebView大小是个问题?

顺便说一句,Cocoa Autolayout是为OSX Lion推出的。 iOS 6现在属于NDA,但是如果你有一个开发者帐户,那就去看看,也许有类似的东西。

答案 2 :(得分:0)

结帐CSLinearLayoutView。它试图模仿Android LinearLayout和RelativeLayout,并且应该能够简化视图的动态调整大小/移动。