CGRectZero和sizeToFit

问题描述

| 我有时看到的代码看起来像这样:
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文档时,我不太确定“调整并移动接收者视图的大小,以便仅包围其子视图”是什么意思。谢谢。     

解决方法

        在UIView中,
sizeToFit
用视图的当前大小调用
sizeThatFits:
。 implementation2ѭ的默认实现返回视图的当前值,换句话说,在大多数情况下,它几乎不执行任何操作(UIView的某些子类覆盖了此方法,因此它返回的内容更有用,例如:UILabel) 换句话说,“ 4”是一个“模板方法”,用于扩展类的功能。它的主要目的是被覆盖。