汽车中心UIViews

时间:2013-07-22 17:48:12

标签: ios objective-c uiview position

我对视图的水平位置有点困惑。 我在视图容器中有很多视图(比子视图总宽度大)。

所有视图必须水平居中。 如果子视图被标记为隐藏(或使用零阿尔法),则其他子视图的位置必须更改为再次居中。

你知道我该怎么做吗?

1 个答案:

答案 0 :(得分:3)

这样的事情应该有效。我将容器传递给函数,确定所有可见子视图的宽度,并从容器宽度和可见子视图的宽度获得x偏移量。从那里,您可以更新可见子视图的框架,它们应该水平居中。

-(void)centerViews:(UIView*)container {
   CGFloat width = 0.0;
   for(UIView *view in container.subviews) {
       if(view.alpha > 0.0) {
           width += view.frame.size.width;
       }
   }

   CGFloat xOffset = (container.frame.size.width - width) / 2.0;

   for(UIView *view in container.subviews) {
       if(view.alpha > 0.0) {
           [view setFrame:CGRectMake(xOffset, view.frame.origin.y, view.frame.size.width, view.frame.size.height)];

            xOffset += view.frame.size.width;
       }
   }      
}

您必须更新此内容以包含视图之间的任何填充。