0

我有一个应用程序,用户可以在其中随意添加我称之为调色板的东西。项目 ( 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%。那么为什么不调整视图的大小呢?我需要自己做吗?

4

2 回答 2

1

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

于 2013-05-13T20:10:55.343 回答
0

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

于 2013-05-13T22:17:01.917 回答