相关疑难解决方法(0)

为什么约束更改或动画不需要调用setNeedsUpdateConstraints?

阅读:

从这个答案:

这是接受的答案建议为视图更改设置动画:

_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)

animation ios autolayout nslayoutconstraint swift

13
推荐指数
1
解决办法
3162
查看次数

iOS8改变动态单元的高度"现在",重新内部单元格内容

这是一个动态细胞

在此输入图像描述

注 - 在示例中,文本不是数据驱动的.它只是单元格的一些文本(例如,考虑帮助文本).在运行时,使用单元格内的实际按钮,将UILabel的.text从一个单词更改为多行.iOS正确调整单元格和表格的大小....

...但仅当单元格在屏幕外滚动,然后再次打开时.

如何提醒表视图重新计算"现在"的所有内容?


(请注意,此问题仅适用于iOS8 +,Xcode7 +,动态单元格高度的自动布局.)

uitableview ios ios-autolayout

5
推荐指数
1
解决办法
327
查看次数

自动布局,插入视图以填充容器视图

我试图让插入的视图填充插入它的容器视图,但是我得到了

无效参数不满足:[约束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加载的

cocoa autolayout

3
推荐指数
2
解决办法
4873
查看次数