我有一个应用程序,用户可以随意添加我称之为调色板的内容。项目(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%。那么为什么视图不会重新调整大小?我需要自己做吗?
答案 0 :(得分:1)
sizeToFit
方法只调用sizeThatFits:
,然后相应地调整视图大小。 UIView类的默认实现返回当前大小,因此您看不到任何效果。您必须编写自己的sizeThatFits:
方法来进行计算。
答案 1 :(得分:0)
这是一个想法。 不要致电sizeToFit
。只需将框架设置为您真正想要的框架。