2014-02-07 33 views
0

我建立使用一个UILabel在屏幕的顶部出现一个问题,然后显示一些UIButtons与在titleLabel文本得到的答案iOS应用UIButtons。我使用这个视图来显示在不同时间许多不同的问题和答案的每个问题,并设置有不同数量的在里面的话。因此,每个UIButton最终可能会有不同数量的单词,从而产生布局问题。我目前使用一些像这样的代码:的iOS回流布局与改变大小

self.firstAnswer.titleLabel.numberOfLines = 0; 
self.firstAnswer.titleLabel.lineBreakMode = NSLineBreakByWordWrapping; 
self.firstAnswer.titleLabel.textAlignment = NSTextAlignmentCenter; 
[self.firstAnswer sizeToFit]; 

允许按钮调整自身以保持所有的文字在屏幕上。它还,然而,使uibuttons当按钮调整大小太大垂直地垂直地重叠(即,现在titleLabel是4行,而不是1)。有没有什么办法,使一个按钮,垂直下方已调整自身向下移动以腾出空间给新调整按钮的另一个按钮?

回答

1

如果你更新什么下列按钮的基础上,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单独。

+0

这绝对是我的,如果我不能找到一个办法做到这一点更简单的计划。我对iOS很新,但我觉得我应该能够点击IB中的某些东西来使布局正常工作。 – enkrates

0

是的,使用自动布局,并按钮垂直间距约束,以他们最近的顶部和底部的邻居。这将保持间距不变,无论您需要多少行按钮。

+0

出于某种原因,这似乎会缩短sizeToFit方法的短路时间,并且我最终会在屏幕右侧运行文本。您的一般解决方案是我觉得**应该工作的那种事情,但我还没有完成它的工作。 – enkrates

+0

@enkrates,是的,它似乎是sizeToFit有时不会自动布局打好。 – rdelmar