sizeToFit如何确定合适的大小?

时间:2013-05-13 20:02:08

标签: ios sizetofit

我有一个应用程序,用户可以随意添加我称之为调色板的内容。项目(UIViews)可以从一个调色板拖到另一个调色板。我想我可以使用sizeToFit方法在删除项目时自动调整调色板的大小,但似乎没有调整大小。

文档说明该方法会调整大小以适合子视图。这不包括我以编程方式添加的UIViews吗?

如果我可以让内置的方法为我工作,我真的不必编写自己的sizeToFit方法。但它似乎什么都不做。这是我尝试过的代码:

        CGPoint oldCenter = self.pieceBeingMoved.center;
        CGPoint newCenter = [self.pieceBeingMoved.superview convertPoint:oldCenter toView:destinationView];
        [destinationView addSubview:self.pieceBeingMoved];
        self.pieceBeingMoved.center = newCenter;
        if (destinationView.tag == 20000) {
           NSLog(@"DestinationView is a palette, so resize it from %@",NSStringFromCGRect(destinationView.frame));
           [destinationView sizeToFit];
           NSLog(@"DestinationView resized to %@",NSStringFromCGRect(destinationView.frame));
        }

添加子视图之前和之后的大小相同。添加的子视图是我运行此测试时唯一的子视图,子视图的大小约为其移动到的调色板大小的5%。那么为什么视图不会重新调整大小?我需要自己做吗?

2 个答案:

答案 0 :(得分:1)

sizeToFit方法只调用sizeThatFits:,然后相应地调整视图大小。 UIView类的默认实现返回当前大小,因此您看不到任何效果。您必须编写自己的sizeThatFits:方法来进行计算。

答案 1 :(得分:0)

这是一个想法。 不要致电sizeToFit。只需将框架设置为您真正想要的框架。