Программно измените размер UIViewController на основе его контейнера

Вы потеряете большие классы с несколькими обязанностями. Вы также, вероятно, потеряете большие методы с несколькими обязанностями. Можно потерять некоторую способность осуществить рефакторинг, но Вы также потеряете часть потребности осуществить рефакторинг.

Jason Cohen сказал что-то как: TDD требует определенной организации по Вашему коду. Это могло бы быть архитектурно неправильно; например, так как закрытые методы нельзя назвать вне класса, необходимо сделать методы нечастными для создания их тестируемыми.

я говорю, что это указывает на пропущенную абстракцию - если частный код действительно должен быть протестирован, это должно, вероятно, быть в отдельном классе.

Dave Mann

5
задан Cœur 3 May 2019 в 06:33
поделиться

1 ответ

Если вы не используете NIB, то как выглядит ваш метод -loadView? Это должно выглядеть так:

- (void)loadView
{
    UIWebView* webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
    webView.delegate = self;
    self.view = webView
    [webView release];
}

В этом случае начальный кадр не имеет значения. UIViewController позаботится о правильном изменении размера вашего представления.

Однако, если вы действительно хотите вставить веб-представление (или любое другое представление) в родительское представление, вы используете autoresizeMask для управления изменением размера вашего представления с его родительским.

Например:

    UIView* parentView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 200)];
    parentView.autoresizesSubviews = YES;

    UIWebView* webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
    webView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

    [parentView addSubview:webView];
    self.view = parentView;
    [parentView release];

В этом случае начальный фрейм webView относится к границам parentView.

8
ответ дан 14 December 2019 в 04:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: