我看到有时看起来像这样的代码:
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的文档,我真的不确定“调整接收器视图的大小和移动它只是包含它的子视图”意味着什么。感谢。
答案 0 :(得分:2)
在视图的当前大小的UIView sizeToFit
调用sizeThatFits:
中。
sizeThatFits:
的默认实现返回视图的当前值,换句话说,它在大多数情况下几乎没有任何内容(UIView的某些子类重写此方法,因此它返回更有用的内容,例如:UILabel)
换句话说,sizeThatFits
它是一个“模板方法”,一种用于扩展类功能的方法。它的主要目的是被覆盖。