相关疑难解决方法(0)

在UITableView中使用自动布局来获取动态单元格布局和可变行高

如何UITableViewCell在表格视图中使用s 内的自动布局,让每个单元格的内容和子视图确定行高(本身/自动),同时保持平滑的滚动性能?

row-height uitableview ios autolayout nsautolayout

1477
推荐指数
18
解决办法
55万
查看次数

什么时候调用layoutSubviews?

我有一个自定义视图,layoutSubview在动画期间没有收到消息.

我有一个填充屏幕的视图.如果我更改导航栏的高度,它在屏幕底部有一个自定义子视图,可以在Interface Builder中正确调整大小.layoutSubviews在创建视图时调用,但从不再调用.我的子视图已正确布局.如果我关闭通话中状态栏,layoutSubviews则根本不会调用子视图,即使主视图确实为其调整大小设置了动画.

在什么情况下layoutSubviews实际上被称为?

我已经autoresizesSubviews设置NO为我的自定义视图.在Interface Builder中,我有顶部和底部支柱以及垂直箭头设置.

cocoa-touch bounds ios layoutsubviews autolayout

259
推荐指数
7
解决办法
16万
查看次数

为什么约束更改或动画不需要调用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
查看次数

使用autolayout删除和重新添加子视图

当使用自动布局时,我的理解是删除子视图(当然保留对它的引用),删除的子视图仍然知道它的自动布局约束.

但是,当稍后将其添加回超级视图时,子视图不再知道其帧大小.相反,它似乎得到零帧.

我假设autolayout会自动调整大小以满足约束条件.那不是这样吗?我认为自动布局意味着不要弄乱框架.添加子视图时是否仍需要设置初始帧rect,即使使用自动布局?

cocoa subview autolayout

9
推荐指数
1
解决办法
6874
查看次数