如何使按钮位置相互关联?

时间:2014-02-20 09:11:54

标签: ios objective-c

我正在尝试制作常见问题解答,因此当您点击某个按钮时,它会将问题和答案替换为文本。我正在使用此代码替换文本:

ViewContoller.m

@interface ViewController : UIViewController
@property (strong, nonatomic) IBOutlet UIButton *buttonTest;
- (IBAction)ButtonTest:(id)sender;

@end

ViewController.h

- (IBAction)ButtonTest:(id)sender
{
    if ([_buttonTest.titleLabel.text isEqualToString:@"This is the Question No1?"])
    {
        [sender setTitle:@"This is the Question No1? This is question No1 answer that enter code herehas a fair bit of content" forState:UIControlStateNormal];
    }
    else
    {
        [sender setTitle:@"What age is This is the Question No1?" forState:UIControlStateNormal];
    }
}

单击按钮时,一切正常,但文本显示在第二个问题的顶部。

有没有人知道如何让这个向下移动以适应答案,但是当它再次被点击时会备份?

由于

3 个答案:

答案 0 :(得分:0)

您应该通过从可点击的问题中移除所有问题的框架来手动管理它,并且您应该根据您指定的文本增加该可点击按钮的高度。

再次单击已应答按钮时,请降低高度并将下方问题框架向上移动。

使用scrollview添加按钮,增加和减少内容大小,并单击按钮。

答案 1 :(得分:0)

  1. 使用AutoLayout设置每个问题,以便每个人的Top Space约束与前一个“底线”相关(当然,除了第一个之外,实际值可以是您想要的任何值):< / p>

    enter image description here

  2. 单击按钮时以编程方式调整问题的高度 可选:如果您需要测量问题+答案所需的高度,this question可能会有所帮助。基本上你需要做的就是像NSString+Geometrics Category这样使用:

    NSDictionary *attributes
      = [NSDictionary dictionaryWithObjectsAndKeys:
         [questionField font],NSFontAttributeName,nil];
    NSAttributedString *attributedString
      = [[NSAttributedString alloc] initWithString:
         [questionField title] attributes:attributes];
    // Here below the height of the string
    CGFloat height = [attributedString heightForWidth:
                     [questionField frame].size.width];
    

答案 2 :(得分:-1)

如果我正确了解您的情况,您想要删除按钮并在按钮所在的同一位置显示您的文字。

我认为你可以把你的UILabel和UIButton放在同一个地方并保持你的标签隐藏。点击按钮取消隐藏你的标签并隐藏按钮这比改变你的按钮文本更好。