- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
何时以及如何使用 layoutIfNeeded
?我知道当我们更改 View 的布局时,我们可以调用 setNeedsLayout
来更新布局,但不确定何时应该使用 layoutIfNeeded
。
注意:我在实际代码中使用了 layoutIfNeeded
,但忘记了它是在什么上下文中使用的。
最佳答案
layoutIfNeeded
强制接收器在需要时立即布局其 subview 。
假设您已经覆盖了 layoutSubviews
,并且 UIKit 认为您的 View 出于某种原因需要布局(例如,您在处理某些用户操作时调用了 setNeedsLayout
)。然后,您的自定义 layoutSubviews
方法将立即被调用,而不是在常规 UIKit 运行循环事件序列中通常被调用的时候(在事件处理之后,但在 drawRect:
之前) .
您可能需要在单个运行循环中调用 layoutIfNeeded
的示例:
setNeedsLayout
已设置,以便稍后调用 layoutSubviews
。layoutSubviews
中执行一些自定义的 TableView 大小调整,从而更改 TableView 大小。问题是当 Controller 要求 TableView 滚动时(第 2 步), TableView 的边界是陈旧的。更新后的边界只会在稍后设置在 TableView 上(第 3 步)。 layoutSubviews
完成后, Controller 希望 TableView 滚动到的内容可能实际上不可见。一个解决方案是让 Controller 在它知道这可能发生的情况下调用 layoutIfNeeded
。
关于ios - layoutIfNeeded 是如何使用的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1182945/
不太明白为什么layoutIfNeeded仍然没有返回布局的正确宽度...但是如果我通过调度获得宽度,它将返回正确的宽度。看来layoutIfNeeded 不会立即布局,而是异步的。如果我错了请纠正我
出现崩溃: navigationController.view.layoutIfNeeded() log : fatal error: unexpectedly found nil while unw
我有一个表格 View ,我使用此方法计算单元格高度 override func tableView(_ tableView: UITableView, heightForRowAt indexPat
所以,我有这样的代码 UIView.animate(withDuration: 2) { self.navigationController?.navigationBar.isHidden =
我有一个 UITextView,正在显示文本当文本不是很大时(我说的是 100-200 个单词),应用程序运行得很好 如果文本非常大(大约 10000 个单词),它就会不断崩溃 代码 func scr
我有一个按钮,可以根据某些情况改变大小。我不需要完成动画,因为用户永远看不到发生的变化。有时,当从较小尺寸切换回较大尺寸时,按钮会卡在较小尺寸上。我认为 layoutIfNeeded() 可以解决这个
我正在为 UITextField 的大小调整设置动画。我正在使用带有约束的自动布局。我的 Storyboard 中有 H:|-[textField] -(8)-[label]-(8)-[image]-
我正在使用此功能使用大量渐变绘图: func drawGradient(colors: [CGColor], locations: [NSNumber]) { let gradientLay
何时以及如何使用 layoutIfNeeded?我知道当我们更改 View 的布局时,我们可以调用 setNeedsLayout 来更新布局,但不确定何时应该使用 layoutIfNeeded。 注意
我正在 xib 文件中创建以下 View 。 有两个约束,我一次想要其中一个,所以我激活一个并停用另一个约束。 其中一个约束是 View (顶层 View )view.bottom == inputV
我正在尝试使用自动版式在屏幕上和屏幕外为我的 ADBannerView 制作动画。预自动布局(设置框架和动画)一切正常。现在我有以下代码,它在 viewDidLoad 上运行以确保广告横幅是否离开屏幕
我已经以编程方式构建了 View ,然后为它们设置了动画。有一个 View 动画链,最后一个是要设置动画的按钮。 当我通过调用 layoutIfNeeded() 更改约束(这些约束独立于其他约束并且没
我遇到了一个让我很困惑的问题。我写了一个简单的两张图片的动画,效果很好。但是突然间它停止了动画,我不明白为什么。我没有做任何我能想到的会影响动画的改变。我已经检查过 NSLayoutConstrain
UIView 我有两种状态: 我在它们之间使用 @IBaction 为 button 制作动画: @IBAction func tapped(sender: UIButton) { flag
一些 S.O.问题展示了一种自动布局技术,用于确定 View 满足其约束所需的最小尺寸:[header systemLayoutSizeFittingSize: UILayoutFittingComp
我这里有一个用于自定义 tableview 单元格的类,但在 awakeFromNib 中,self.frame 始终为 0,0,0,0。我尝试调用 [self layoutIfNeeded] 但这没
layoutIfNeeded 在 iPad 上无法正常工作,但在 iPhone 上可以正常工作。我想要一个圆形按钮。在 iPhone 上圆圈生成正确,但在 iPad 上它看起来像菱形。 _btnthu
我有一个适用于 iPad 的数学程序,它使用 Big Number 库进行计算,然后根据这些计算更新 UIView (myView) 中最多包含 20,000 个 UILabel 的数组。 计算可能需
我注意到的奇怪的事情: let navController = UINavigationController(rootViewController: myRootViewController) nav
我的主视图有一个 subview ,我使用以下扩展添加了一个掩码: extension UIView{ func addTopRoundCorners(){ let bezierPath =
我是一名优秀的程序员,十分优秀!