我在我的应用程序中使用了SBTableAlert库,但是对于iOS 7,这个库将不起作用。 我修复它添加TSAlertView和对话框显示正常。 但我的问题是按钮的位置不是应该的。
我将按钮的位置设置为:
-(void)willPresentTableAlert:(SBTableAlert *)tableAlert{
int counter = 0;
for (id view_sub in self.filterAlert.view.subviews) {
if ([view_sub isKindOfClass:[UIButton class]]) {
switch (counter) {
case 0:
((UIButton*)view_sub).frame = CGRectMake(10,
10,
144,
44);
((UIButton*)view_sub).backgroundColor = [UIColor redColor];
break;
case 1:
((UIButton*)view_sub).frame = CGRectMake(169,
150,
144,
44);
break;
case 2:
((UIButton*)view_sub).frame = CGRectMake(328,
150,
144,
44);
break;
default:
break;
}
counter++;
}
}
}
问题是按钮被涂成红色但是框架集被忽略,而不是在一行中排列,它们被放在另一行之下并且不在Alert框架中。
答案 0 :(得分:0)
我终于找到了答案。 问题出在TSAlertVeiw库中,因为它具有函数recalcSizeAndLayout:在最后调用的布局并覆盖按钮的自定义位置。
解决方案是在TSAlertView customLayoutOfButton
中添加新的BOOL变量,然后在自动布局按钮之前检查它:
if (!self.customLayoutOfButton) {
CGFloat buttonHeight = [[self.buttons objectAtIndex:0] sizeThatFits: CGSizeZero].height;
if ( stacked )
{
CGFloat buttonWidth = maxWidth;
for ( UIButton* b in self.buttons )
{
b.frame = CGRectMake( kTSAlertView_LeftMargin, y, buttonWidth, buttonHeight );
y += buttonHeight + kTSAlertView_RowMargin;
}
}
else
{
CGFloat buttonWidth = (maxWidth - kTSAlertView_ColumnMargin) / 2.0;
CGFloat x = kTSAlertView_LeftMargin;
for ( UIButton* b in self.buttons )
{
b.frame = CGRectMake( x, y, buttonWidth, buttonHeight );
x += buttonWidth + kTSAlertView_ColumnMargin;
}
}
}