我对视图的水平位置有点困惑。 我在视图容器中有很多视图(比子视图总宽度大)。
所有视图必须水平居中。 如果子视图被标记为隐藏(或使用零阿尔法),则其他子视图的位置必须更改为再次居中。
你知道我该怎么做吗?
答案 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;
}
}
}
您必须更新此内容以包含视图之间的任何填充。