我正在构建一个 iOS 应用程序,它使用 UILabel 在屏幕顶部显示问题,然后在 titleLabel 中显示一些带有文本的 UIButton 以获得答案。我正在使用此 View 在不同时间显示许多不同的问题,每个问题和一组答案中都有不同数量的单词。因此,每个 UIButton 可能会出现非常不同数量的单词,从而产生布局问题。我目前正在使用这样的代码:
self.firstAnswer.titleLabel.numberOfLines = 0;
self.firstAnswer.titleLabel.lineBreakMode = NSLineBreakByWordWrapping;
self.firstAnswer.titleLabel.textAlignment = NSTextAlignmentCenter;
[self.firstAnswer sizeToFit];
它允许按钮调整自身大小以将所有文本保留在屏幕上。但是,当按钮在垂直方向上调整太多时(即,titleLabel 现在是 4 行而不是 1 行),它也会导致 uibutton 垂直重叠。有什么方法可以使垂直位于另一个已调整自身大小的按钮下方的按钮向下移动以为新调整大小的按钮腾出空间?
最佳答案
如果您根据 firstAnswer 的新高度更新以下按钮的位置会怎么样:
self.secondItem.frame = CGRectMake(self.secondButton.frame.origin.x,
self.firstAnswer.frame.origin.y + self.firstAnswer.frame.size.height + 10,
self.secondButton.frame.size.width,
self.secondButton.frame.size.height);
如果您有多个其他项目,您可以在每个后续项目之后重新定位它们,或者对所有项目使用一般偏移量。
编辑: 如果后面有多个按钮,您也可以将它们放在一个透明的 UIView 中,然后单独偏移那个 UIView。
关于带有改变大小的 UIButtons 的 iOS 回流布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21637328/