我使用storyboard在tableview中布局自定义单元格。我在这个自定义单元格中有一个UI按钮,其初始x,y大小为60x7。此UI按钮(与故事板中的所有对象一样)使用带有大小类的自动布局。
当用户点击视图中的编辑按钮时,我想将每个单元格中UIButton的大小更改为60x60。用于更改UIButton大小的各种StackOverflow解决方案执行如下操作:
CGRect buttonFrame = cell.button1Left.frame;
buttonFrame.size = CGSizeMake(60, 60);
cell.button1Left.frame = buttonFrame;
但解决方案还警告说,除非您关闭自动布局,否则这将不起作用。但是,当我尝试在自定义单元格中关闭此UIButton的自动布局时,我收到以下警告:
这个警告吓到了我。如果我禁用大小类,这会弄乱我的布局,禁用我的segues,并使未来的更改更加困难吗?如果是这样,还有其他方法可以完成我正在尝试的事情吗?
额外问题:是否可以为UIButton的大小调整设置动画(即使其看起来伸展到更大的尺寸)?
答案 0 :(得分:1)
试试这个:
1)在故事板中为Button添加2个约束;
2)为他们创建属性:
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *btnHeight;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *btnWidth;
3)向按钮点击添加操作:
- (IBAction)buttonPressed:(id)sender {
UIButton *btn = (UIButton *)sender;
btn.titleEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 0);
self.btnHeight.constant +=50;
self.btnWidth.constant +=50;
[UIView animateWithDuration: 0.7 animations:^{
[self.view layoutIfNeeded];
}];
}
P.S。如果您的按钮位于单元格的中心,则还需要创建顶部和左侧约束,如果您将高度和宽度设置为50,则需要将顶部和左侧设置为较小的25个。
答案 1 :(得分:0)
我认为对我来说最好的解决方案是创建另一个已经达到所需尺寸的UIButton。当用户按下视图的编辑按钮时,我隐藏了60x7的折叠UIButton。然后我取消隐藏60x60的全尺寸UIButton。为了使过渡看起来更加自然,我做了以下几点:
[UIView transitionWithView:cell.pencilButtonLeft
duration:0.6
options:UIViewAnimationOptionTransitionFlipFromBottom
animations:NULL
completion:NULL];
cell.pencilButtonLeft.hidden = NO;
至于我试图关闭自动调整大小时的警告消息,我决定不关闭自动调整大小而不禁用大小类。在仔细阅读时,只要我没有打算在iPhone以外的设备上运行应用程序,我就可以一直没问题。感谢@Ptah对动画的建议。