gpt4 book ai didi

ios - animateWithDuration setFrame 不工作

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:40:22 31 4
gpt4 key购买 nike

您好,我有一段代码只有一行不起作用...

[UIView animateWithDuration:0.3 delay:0.0 options:UIViewAnimationOptionCurveEaseOut animations:^{
[label setFrame:CGRectMake(0, 0, frame.size.width, kStandardLabelHeight)]; //working
[self.currentLabel setFrame:CGRectOffset(self.currentLabel.frame, frame.size.width, 0)]; //not working
[self.currentLabel setAlpha:0.0f]; //working
} completion:^(BOOL finished) {
[self.currentLabel removeFromSuperview];
self.currentLabel = label;
}];

我不知道哪里出了问题......

最佳答案

我发现:如果我关闭“使用自动布局”,那么它会神奇地工作,所以这个问题与自动布局有关。

经过搜索,我找到了这个:http://weblog.invasivecode.com/post/42362079291/auto-layout-and-core-animation-auto-layout-was

为您的 View 添加约束导出映射,然后不使用 setFrame,更新约束就可以解决问题!

下面是我最后的实现(_topConstraint是tableview的顶部垂直空间约束):

- (IBAction)switchButtonTouched:(id)sender
{
if (_topConstraint.constant <= 0)
_topConstraint.constant = _buttonView.frame.size.height;
else
_topConstraint.constant = 0;

[_tableView setNeedsUpdateConstraints];
[UIView animateWithDuration:0.5f animations:^(void){
[_tableView layoutIfNeeded];
} completion:^(BOOL finished){
}];
}

关于ios - animateWithDuration setFrame 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18946717/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com