问题标签 [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 投票
8 回答
184632 浏览

ios - 什么时候调用 layoutSubviews?

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

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

什么情况下layoutSubviews实际调用?

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


难题的另一部分是必须将窗口设为关键:

否则子视图不会自动调整大小。

0 投票
4 回答
17223 浏览

iphone - 动画期间的layoutSubviews?

我有UIView一堆子视图,全部使用layoutSubviews. 调整大小时view,相对位置都会发生变化。我希望在动画调整大小(使用 +[UIView beginAnimations:]调用)期间进行这些重新计算。这似乎没有发生。有任何想法吗?

0 投票
2 回答
2965 浏览

iphone - 在自定义 UIButton 中手动定位 titleLabel(使用 layoutSubviews)

我为我的应用程序创建了一个 UIButton 子类,我需要手动将 titleLabel 重新定位为按钮高度的 1/4 左右。这个帖子; http://forums.macrumors.com/showthread.php?t=763140似乎直接解决了同样的问题,而且解决方案简单易懂。但是,我未能实现这一点,因为从未调用过我对 layoutSubviews 的覆盖。我的按钮是静态的,所以 layoutSubviews 只需要第一次调用,但它永远不会。我的代码:

移动标签没有问题,但永远不会调用 layoutSubviews。我也尝试添加 layoutIfNeeded,但没有任何区别。更奇怪的是,我是否尝试直接从构造函数调用 [self layoutSubviews] 但仍然没有调用layoutSubviews !我开始认为这甚至可能是 SDK 3.1.3 中的错误

谁能帮忙?!

0 投票
5 回答
9540 浏览

iphone - 旋转 UIView 时覆盖 layoutSubviews

在 UIView 内旋转滚动视图时,滚动视图不会使用其默认的自动调整大小行为正确定位。

因此,当发生旋转时,在willRotateToInterfaceOrientation我调用中[self.view setNeedsLayout];,我的layoutSubviews方法如下:

但是在方法上放一个断点,它似乎永远不会进入方法。

我需要做其他事情才能让它工作吗?

谢谢。

0 投票
2 回答
802 浏览

iphone - 在通过 UIButtons 循环时使用 layoutsubviews() 可以正常工作,但在通过标签检索它们时循环时不能

我正在尝试为瓷砖游戏模仿 iPhone Springboard 拖放功能,目前正在使用 MatrixCells 在视图初始化中生成 UIButtons 并将它们添加到视图中。MatrixCells 有一个order标签,它也用于它们自己的按钮 ( [button setTag:[cell order]];)。

当使用 `layoutSubviews' 循环浏览视图中的 UIButtons 以将它们排列在网格中时,它可以正常工作。网格弹出,我的拖动功能允许我随意拖动按钮。

- (void)layoutSubviews {

}

但是,在更改单元格的顺序时,循环通过subviews不起作用,因为我很确定我根本不应该在那里乱搞。所以,我想循环浏览我的MatrixCells并使用它们order来获得适当的视图,然后更改frame. 但是,布局在按钮 0 处变得混乱,我不能再将它们用作按钮。

- (void)layoutSubviews {

}

这是一张带有结果的图片:http: //i52.tinypic.com/2q903lk.png

viewWithTag似乎是最优雅的解决方案。所以我很茫然。知道为什么这些实现不呈现相同的吗?

0 投票
2 回答
4264 浏览

iphone - 尽管有任何设备旋转,layoutsubviews 只调用一次

正如标题所说:我创建了一个空的 UIView 子类并向其添加子视图,我创建了一个空的 layoutSubviews 方法并在那里添加了一个断点。然后我构建项目,当在 layoutSubviews 方法中加载视图时模拟停止。到目前为止一切都很好。我继续模拟并旋转设备(假设视图控制器设置为允许任何方向)但是 layoutSubviews 再也不会被调用,尽管我可以看到我的对象是如何旋转的。任何想法?

好的,我将简化我的问题:如何创建带有一些子视图的自定义 UIView 并使其响应设备方向?我不需要使用 drawRect 或任何东西,只需子类化 UIView,添加几个子视图并在设备旋转时处理它们。

0 投票
2 回答
3950 浏览

iphone - 旋转后更改 ipad 上的背景图像

我使用UIImageView. 为了支持正确的界面旋转,我编写了layoutSubviews方法。在这个方法中 .frame 属性正确更改,但是当我尝试更改图像时UIImageView

没有改变。我做错了什么还是无法更改方法UIImageView中的图像layoutSubviews

0 投票
1 回答
1450 浏览

iphone - 如何处理进入和退出编辑模式的 UITableViewCell 中的子视图调整大小?

问题 - 如何处理 UITableViewCell 中的子视图调整大小进入和退出编辑模式?

背景 - 我已经研究了如何根据使用的文本和字体调整我的 UiLabels 和 UITableViewCell 的大小。我目前正在 cellForRowAtIndexPath 中执行此操作(我正在以编程方式创建 UILabels 并将其作为子视图添加到现有的 contentView 中)

方面 - 所以我希望答案能为我解决问题,包括:

  1. 该方法是否基于每次 UITableView 进入和退出编辑模式时必须手动重新确定子视图(例如 UILabel)定位(例如 x/y/height/width)这一事实?

  2. 如果是 - 通常会使用哪些方法?例如 cellForRowAtIndexPath?

  3. 如果是 - 就满足 EDIT 模式而言,可以只假设将出现的编辑图标的标准(不变)减少量(以像素为单位)吗?

  4. 如果否 - 那么这里的方法是什么?以某种方式使用缩放?需要设置哪些属性以允许这种情况自动发生

谢谢

0 投票
2 回答
1095 浏览

iphone - 如何从子类化的 UITableViewCell 中访问 UITableViewController 变量?

如何UITableViewController从子类中访问参数UITableViewCell

我在UITableViewController字体大小中有一个参数(即用户可以更改字体大小)。因此layoutSubviews,我的自定义子类中的方法在UITableViewCell需要重新布局自身时需要访问最新的字体(因为它的标签位置将取决于字体)。

所以我的问题是,从我的自定义子类UITableViewCell,特别是在layoutSubviews方法中,我如何访问作为实例变量的“uiFont”参数UITableViewController

0 投票
2 回答
6447 浏览

iphone - 如何设置自定义 UIView 的大小/位置以将其放置在自定义 UITableViewCell 中?

如何设置以编程方式放置在 UITableViewCell 中的子视图的大小?

我有一个自定义(子类)UITableViewCell,其中单元格的一部分包括许多行(动态),这些行被实现为自定义 UIView。这个想法是创建自定义视图(这是一行项目),然后当 UITableViewCell 命中 layoutSubviews 时,它将(a)设置自己重新定位并(b)循环并在每一行上调用“layoutSubviews”它用于行的自定义 UIView。

问题- 我不确定如何正确设置自定义 UIView 行的大小/位置?我如何在自定义 UIView layoutSubviews 方法中确定它的 x、y、width、height 以便我可以定位它?

例如,我实际上是否需要在 UITableCellView 的 layoutSubviews 方法中手动循环遍历所有行并调用它们的自定义方法来传递它们需要的位置/宽度/高度?然后当自定义 UIView 行的 layoutSubview 方法被击中时,它会知道查找存储这些值以使用它们的实例变量吗?

希望这是有道理的。

结构是:

动态自定义 UITableCellView(子类)

  • 在 heightForRowAtIndexPath 中动态确定 rowHeight
  • 在 layoutSubviews 中,它包括遍历子视图(我拥有的自定义 UIView)并在每个子视图上调用 layoutSubview

在自定义 UIView 中(代表一行项目,例如 UILabel)

  • 在 layoutSubview 中 - 问题:如何设置此子视图的框架大小?
  • 我假设框架的 x,y 应该是 0,0?
  • 对于宽度/高度,您如何获得应该设置的超级视图区域的完整大小?
  • superview 是否应该在 layoutSubviews 之前将这些信息传递给它?