问题标签 [layoutsubviews]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2618 浏览

ios - iOS8 Beta 3 UITableViewCell layoutSubviews 无限循环

iOS8 中引入了可自动调整大小的表格视图单元(WWDC Session 226 What's new in table and collection views)。在我的项目中,我正在尝试实现旧的固定行高行为。此外,对我来说最重要的是cell.contentView在左侧和右侧插入带有边距的默认框架。因此,我更改了cell.contentView.frame属性,然后立即-[cell setNeedsLayout]调用该方法,这导致单元格陷入无限layoutSubviews循环。

重现步骤:

  1. 创建新的单视图项目并将默认视图控制器替换为表视图控制器

  2. 禁用表格视图自动高度计算

-(void)viewDidLoad { [super viewDidLoad]; self.tableView.estimatedRowHeight = 0; self.tableView.rowHeight = 44; } 3. 在故事板的表格视图中拖放一个自定义单元格,

  1. 将任何子视图添加到自定义单元格:在此处输入图像描述

  2. 子类化单元格并更改contentView.frame,layoutSubviews

  3. 构建并运行。

结果:模拟器最终出现黑屏,卡在无限布局子视图循环中。

预期结果:模拟器显示一个contentView带有自定义框架的单元格的表格视图。

评论:在调试的过程中,我发现如果单元格上没有任何自定义子视图,则可以避免无限循环。因此,在满足以下条件后,似乎会出现该错误:

  • self.tableView.estimatedRowHeight = 0; self.tableView.rowHeight = 44;
  • cell.contentView.frame = CGRectMake(...)
  • cell have custom subviews dropped on it in xib or storyboard

苹果在 iOS8 的“已知问题”列表中没有这个问题,所以我想知道它实际上是 iOS8 中的一个错误还是有人知道如何解决这个问题?

0 投票
1 回答
4228 浏览

ios - UIView/CALayer:Transform触发superview中的layoutSubviews

当更改 UIView 的某些属性时,它会layoutSubviewssuperview中触发。我在文档中找不到任何关于此的陈述。

这些属性在 superview 和 self 中触发布局

  • 框架
  • 界限

这些属性仅在超级视图中触发布局

  • 转换
  • 层变换

这些属性仅在 self 中触发布局

  • 没有任何

这些属性不会触发任何布局

  • 中央
  • layer.anchorPoint
  • 层位
  • α

我发现 transform 会触发布局而 position 和 anchorPoint 不会,这很令人困惑。

示例代码https ://github.com/hfossli/LayoutSubviewsInconsistency


我想知道:

  • 为什么我会看到这种行为
  • 如果这真的是不一致的,或者我误解了一些核心概念
  • 每次我更改转换时如何避免超级视图到 layoutSubviews

我在文档和头文件中找不到任何关于此的内容。当使用 UIDynamics 或类似的时候,这个问题很严重。

0 投票
1 回答
3114 浏览

swift - Swift - UIBezierPath 调用中的额外参数“半径”

我正在将 Objective-C 库 ( STKSpinnerView ) 改编为 Swift,但无法解决此错误:

如果我使用 Apple 说的方法,我不明白为什么“半径”是一个额外的参数......你知道如何解决它吗?谢谢!

0 投票
1 回答
1799 浏览

ios - Swift:setNeedsLayout 未调用 layoutSubviews

我有一个backgroundwhich 也是一个UIView,它有 3UIViews作为它的子视图。我UIPanGestureRecognizer给它们每个都添加了一个,希望当用户向左拖动视图时,相应的UIView水平扩展。这是我的代码:

layoutSubviews()通话中我有:

很简单,但它不知何故不起作用,我不知道出了什么问题。我也尝试过self.view.setNeedsLayout(),但也没有运气。*labelbgUIViews,不是UILabels。

提前致谢!

0 投票
1 回答
260 浏览

ios - 在 layoutSubviews 单元格边界或框架应该设置?

我害怕将单元格设置framelayoutSubviews,因为我知道我想将单元格放入 0origin.x位置,但我不确定origin.y位置。但有时只设置单元格的boundsso size,会产生奇怪的效果,即单元格从 '移出' collectionView

你在 layoutSubviews 中设置什么框架或边界?

0 投票
1 回答
1243 浏览

ios - 什么样的事情会导致 viewWillLayoutSubviews 在后台线程中运行?

我在我的应用程序中检测到罕见的崩溃。堆栈跟踪没有帮助。它与我的代码没有直接关系:

因此,我尝试添加更多调试信息以了解有关崩溃的更多信息。我可以找到viewWillLayoutSubviews. 它在后台被调用。如果我检测到它在后台,我可以退出该功能。但这是一个肮脏的黑客。我想通过防止“事物viewWillLayoutSubviews”在后台线程中调用应用程序来正确修复它。

我还没有找到那些“东西”,因为堆栈跟踪没有帮助。

那些“东西”可能是什么?

0 投票
1 回答
384 浏览

ios - 在 layoutSubviews 方法中设置单元格子视图框架与在 cellForRowAtIndexPath 方法中设置单元格子视图框架有什么优势?

我只是在想在layoutSubviews创建UITableViewCell单元格时设置框架、坐标/大小有什么好处cellForRowAtIndexPath

正如我所看到的,如果autoresizingmask在旋转的同时正确地设置视图框架大小,那么cellForRowAtIndexPath应该足够使用了吗?!

0 投票
1 回答
3409 浏览

ios - iOS 8 GM 上无限循环中的 layoutSubviews

我的应用子类 aUITableViewCell并实现layoutSubviews修改单元格的contentView宽度,如下所示:

使用 iOS 8 模拟器和 Xcode 6 GM 种子运行此代码时,会触发无限循环。但是,当在运行 iOS 8 GM 种子的真实 iPhone 或 iPad 上运行时,它不会像以前的 iOS 版本那样循环。

我首先认为差异是编译器优化,但模拟器在调试配置和发布配置中都会循环。

问题

  • 为什么iOS 8 GM和模拟器有区别?
  • 这是一个严重的错误修复吗?即使我无法在设备上重现它,我也非常不愿意发布具有潜在严重挂起错误的应用程序。
  • 在您看来,什么是重构它以消除循环而不导致 iOS 7 和 6 回归的最佳方法?
0 投票
1 回答
3160 浏览

ios - 如何在布局子视图后更新约束?

我知道渲染视图按以下顺序执行以下 3 个步骤:

  1. 更新约束
  2. 布局视图(这里是我们计算帧的地方)
  3. 展示

现在我的问题是,如果我修改自定义按钮的高度,并且该按钮与周围的视图有约束,我该如何更新该约束并避免与视图重叠?您可以看到注释行,它们都不起作用。

0 投票
1 回答
156 浏览

objective-c - UITableViewCell中IBOutlet属性连接的视图不能换帧

我有一个 A 类,它的子类UITableViewCell,并且只是将它的 IBOutlet 属性链接titleLabel到情节提要中的 UILabel 。但似乎我不能改变框架titleLabel

并执行中的代码- (void)layoutSubviews,但不工作。

令人困惑的是,当在设备中运行的应用程序上点击 Cell 时,位置发生了变化,我创建了titleLabel使用代码,更改了框架,然后就可以了。

谁能帮帮我。。