CGRectZero和sizeToFit

时间:2011-06-21 23:25:00

标签: iphone uiview

我看到有时看起来像这样的代码:

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 个答案:

答案 0 :(得分:2)

在视图的当前大小的UIView sizeToFit调用sizeThatFits:中。

sizeThatFits:的默认实现返回视图的当前值,换句话说,它在大多数情况下几乎没有任何内容(UIView的某些子类重写此方法,因此它返回更有用的内容,例如:UILabel)

换句话说,sizeThatFits它是一个“模板方法”,一种用于扩展类功能的方法。它的主要目的是被覆盖。