移动带有子视图的 UIView
Posted
技术标签:
【中文标题】移动带有子视图的 UIView【英文标题】:Moving a UIView with subviews 【发布时间】:2012-03-05 18:43:50 【问题描述】:我想要一个带有两个 UIImageView
子视图的视图 (UIView),
然后在屏幕上(同时)移动这两个图像。
在场景 1 中,我创建了一个具有屏幕尺寸的 UIView
,并将其固定不变,
然后移动两个子视图的中心点。在场景 2 中,我创建
a UIView
两个图像的大小,然后围绕屏幕移动UIView
中心点。
我原以为最终结果会是一样的,但事实并非如此。 为什么不呢?
场景 1:
UIView mainView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
UIImageView firstImage = [[UIImageView alloc] initWithFrame:muchSmallerRect];
UIImageView secondImage = [[UIImageView alloc] initWithFrame:muchSmallerRect];
[mainView addSubview:firstImage];
[mainView addSubview:secondImage];
firstImage.center = someSpecificPoint;
secondImage.center = someSpecificPoint;
场景 2:
UIView mainView = [[UIView alloc] initWithFrame:muchSmallerRect];
UIImageView firstImage = [[UIImageView alloc] initWithFrame:muchSmallerRect];
UIImageView secondImage = [[UIImageView alloc] initWithFrame:muchSmallerRect];
[mainView addSubview:firstImage];
[mainView addSubview:secondImage];
mainView.center = someSpecificPoint;
【问题讨论】:
您能否提供更多关于“最终结果的差异”的详细信息? 【参考方案1】:您说的是两个不同的坐标系。 mainView.center
在包含mainView
的视图的坐标系中表示,而firstView.center
和secondView.center
是在mainView
的坐标系中表示的。您当然可以通过移动包含它们的视图将firstView
和secondView
一起移动,但是如果您想获得与移动这两个视图本身相同的结果,则需要在这两个坐标系之间进行转换。
【讨论】:
我曾认为因为muchSmallerRect = CGRectMake(0.0, 0.0, 50.0, 50.0);
和所有视图(主视图和两个子视图 UIIMageViews)的大小相同,所以不同的坐标系会对齐。显然你是对的,因为最终结果差异很大。这是否通过使用 convertPoint:fromView:
更正?以上是关于移动带有子视图的 UIView的主要内容,如果未能解决你的问题,请参考以下文章
UIView transitionWithView 带有多个xib文件的子视图