Автоматическое изменение макета вида - PullRequest
4 голосов
/ 04 февраля 2011

Есть ли способ автоматически изменять размер элемента (например, WebView), когда соседний элемент (UIImageView) скрыт?

У меня есть обычный UIView с WebView в нем, показывающим HTML, но в некоторых случаях требуется изображение выше этого.Поэтому я поместил изображение над WebView, но хотел бы, чтобы webview также занимал пространство ImageView, когда этого нет, в противном случае есть белая полоса.Webview, но я не думаю, что в любом случае текст должен обтекать изображение.

У кого-нибудь есть какие-либо предложения для аккуратных решений?Спасибо за миллион заранее!

Ответы [ 3 ]

2 голосов
/ 29 июня 2012

Удобный трюк, который я выучил, заключается в том, чтобы полагаться на 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 ;
}
0 голосов
/ 29 июня 2012

Проверить CSLinearLayoutView .Он пытается имитировать Android LinearLayout и RelativeLayout и должен иметь возможность упростить динамическое изменение размера / перемещение видов.

0 голосов
/ 29 июня 2012

Почему такая проблема заключается в том, чтобы просто изменить размер вашего WebView в том же методе, который показывает или скрывает изображение?

Кстати, Cocoa Autolayout был представлен для OSX Lion.На данный момент iOS 6 находится под NDA, но если у вас есть аккаунт разработчика, посмотрите, может быть, там что-то подобное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...