CGRectZero и sizeToFit - PullRequest
       3

CGRectZero и sizeToFit

2 голосов
/ 22 июня 2011

Я вижу код, который иногда выглядит примерно так:

NSArray *segmentedControl = [NSArray arrayWithObjects:@"First", @"Second", @"Third", nil];
    UISegmentedControl *ctrl = [[UISegmentedControl alloc] initWithItems:segmentedControl];
    ctrl.segmentedControlStyle = UISegmentedControlStyleBar;
    ctrl.selectedSegmentIndex = 0;
    ctrl.frame = CGRectZero;
    [ctrl sizeToFit];
    self.navigationItem.titleView = ctrl;
    [ctrl release];

Для CGRectZero и sizeToFit, почему это делается? Это тот факт, что вы хотите, чтобы объект находился в начале координат 0, 0, а затем, устанавливая ширину и высоту кадра в 0, но вызывая sizeToFit, он заполняет представление? Глядя на документацию UIView, я не совсем уверен, что означает «Изменяет размеры и перемещает представление получателя, чтобы оно просто заключало свои подпредставления». Спасибо.

1 Ответ

2 голосов
/ 30 января 2012

В UIView sizeToFit вызывает sizeThatFits: с текущим размером представления.

Реализация по умолчанию sizeThatFits: возвращает текущее значение представления, другими словами, в большинстве случаев она практически ничего не делает (некоторые подклассы UIView переопределяют этот метод, поэтому он возвращает что-то более полезное, например: UILabel)

Другими словами sizeThatFits это «шаблонный метод», метод, созданный для расширения функциональных возможностей класса. Его главная цель - быть отвергнутым.

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