从这个答案:
这是接受的答案建议为视图更改设置动画:
_addBannerDistanceFromBottomConstraint.constant = 0
UIView.animate(withDuration: 5) {
self.view.layoutIfNeeded()
}
Run Code Online (Sandbox Code Playgroud)
layoutIfNeeded当我们不更改帧时,为什么要打电话.我们正在改变约束,所以(根据这个其他答案)我们不应该调用setNeedsUpdateConstraints吗?
同样,这个备受好评的答案说:
如果稍后发生某些变化会使您的某个约束无效,则应立即删除约束并调用setNeedsUpdateConstraints
我确实尝试过使用它们.使用setNeedsLayout我的视图在左侧正确设置动画
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func animate(_ sender: UIButton) {
UIView.animate(withDuration: 1.8, animations: {
self.centerXConstraint.isActive = !self.centerXConstraint.isActive
self.view.setNeedsLayout()
self.view.layoutIfNeeded()
})
}
@IBOutlet weak var centerYConstraint: NSLayoutConstraint!
@IBOutlet var centerXConstraint: NSLayoutConstraint!
}
Run Code Online (Sandbox Code Playgroud)
但是使用setNeedsUpdateConstraints 不动画,它只是将视图快速向左移动.
import UIKit
class ViewController: UIViewController …Run Code Online (Sandbox Code Playgroud) 这是一个动态细胞
注 - 在示例中,文本不是数据驱动的.它只是单元格的一些文本(例如,考虑帮助文本).在运行时,使用单元格内的实际按钮,将UILabel的.text从一个单词更改为多行.iOS正确调整单元格和表格的大小....
...但仅当单元格在屏幕外滚动,然后再次打开时.
如何提醒表视图重新计算"现在"的所有内容?
(请注意,此问题仅适用于iOS8 +,Xcode7 +,动态单元格高度的自动布局.)
我试图让插入的视图填充插入它的容器视图,但是我得到了
无效参数不满足:[约束isKindOfClass:[NSLayoutConstraint class]]
- (void)insertedView:(NSView *)insertedView needsToFillContainerView:(NSView *)containerView {
[containerView addSubview:insertedView];
[containerView setTranslatesAutoresizingMaskIntoConstraints:NO];
[containerView addConstraints:@[
[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[insertedView]|"
options:0
metrics:nil
views:NSDictionaryOfVariableBindings(insertedView)],
[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[insertedView]|"
options:0
metrics:nil
views:NSDictionaryOfVariableBindings(insertedView)]
]
];
}
Run Code Online (Sandbox Code Playgroud)
基本上我要插入的一个视图是从VC加载的