我正在尝试制作常见问题解答,因此当您点击某个按钮时,它会将问题和答案替换为文本。我正在使用此代码替换文本:
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];
}
}
单击按钮时,一切正常,但文本显示在第二个问题的顶部。
有没有人知道如何让这个向下移动以适应答案,但是当它再次被点击时会备份?
由于
答案 0 :(得分:0)
您应该通过从可点击的问题中移除所有问题的框架来手动管理它,并且您应该根据您指定的文本增加该可点击按钮的高度。
再次单击已应答按钮时,请降低高度并将下方问题框架向上移动。
使用scrollview添加按钮,增加和减少内容大小,并单击按钮。
答案 1 :(得分:0)
使用AutoLayout设置每个问题,以便每个人的Top Space约束与前一个“底线”相关(当然,除了第一个之外,实际值可以是您想要的任何值):< / p>
单击按钮时以编程方式调整问题的高度 可选:如果您需要测量问题+答案所需的高度,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放在同一个地方并保持你的标签隐藏。点击按钮取消隐藏你的标签并隐藏按钮这比改变你的按钮文本更好。