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

ios - ios与layoutSubviews相反的是什么

我有一个视图,它在自己的类中退出,并带有自己的 xib。

这个视图被初始化并作为一个子视图添加到我的 viewController 视图中。

当视图被初始化时,方法 layoutSubviews 被调用,我在视图中自定义了一些东西。

但是当视图从父视图(如果有)中移除时调用哪个方法?

例如,对于 ViewController,调用 viewWill/DidDisappear。是否有与 UIView 类似的方法(与 layoutSubviews 相对)?

提前致谢

- -编辑 - -

我刚刚找到了一个在添加和删除子视图时都调用的方法:

如果 newSuperview == 0,您可以自定义删除子视图。

我是对的还是处理这种情况的俗气?

0 投票
1 回答
226 浏览

uitableview - 在 UITableViewCell 子类中为 UILabel 设置 UIFont

是否建议设置UIFont一个UILabelin layoutSubviews. 我正在继承一个UITableViewCell. 如果需要,我们layoutSubview会调整UIView框架,所以我不确定是否应该使用它。

另外,是否有类似的方法viewDidLoad,它只会被调用一次。

我厌倦了在 中设置字体initWithCoder,但IBOutlet在 中UILabel是空的initWithCoder

我可以在 中设置UILabel文本cellForRowAtIndexPath,因此与此自定义的连接UILabel是正确的。

UIViewController注意:- 单元格从in初始化UIStoryboard

0 投票
0 回答
1243 浏览

ios - iOS:需要向搜索栏添加添加按钮

我需要一个允许用户搜索某些东西的搜索控件,然后如果他们没有找到它,他们会按下添加按钮来添加它。我需要在用户输入要搜索的文本时显示添加按钮,我在想文本的右侧。如果我将按钮放在导航栏中,则在用户搜索时它不会显示。

我想使用搜索栏和搜索显示控制器,因为我需要在用户键入时显示结果的功能。这里的第一个答案——在 UISearchBar 左侧添加按钮——似乎不适用于搜索显示控制器。当用户激活搜索字段时,它就会消失。

我已经在这方面走了几条兔子路线:

在这里的第二个答案——在 UISearchBar 左侧添加按钮——我看到建议覆盖书签按钮。这是非常聪明和有效的,但我不知道如何获得“官方”添加按钮图像来覆盖。模拟器似乎不再有图像(?),而且我不喜欢在我的代码中硬编码某些东西的想法。我宁愿(重新)使用 Apple 的添加按钮图标,但我不知道该怎么做。

我尝试创建一个 UISearchBar 的子类,该子类是从具有搜索栏和按钮的笔尖加载的,但我意识到如果我沿着这条路走下去,我认为我必须重新实现 UISearchBar 的界面并转发所有方法调用我正在管理的“真实” UISearchBar。这似乎很恶心。

我尝试创建一个子类 UISearchBar 的视图,并在初始化时动态添加按钮。但在那条道路上,我非常受制于约束。搜索栏中文本字段的约束在视图层次结构中上升了几个级别,我很确定那里至少有一个约束需要删除,同意吗?(因为文本字段当前被限制为延伸到搜索栏的末尾)。

我也尝试了相同的子类并尝试仅在 layoutSubviews 中设置控件的位置,但是当我这样做时,我发现自己必须在搜索栏中放置所有子控件(包括取消按钮等),并且似乎错了。

我仍处于学习模式,而且我的日程安排并不紧。我想以“正确”的方式做到这一点。这意味着我想重用现有的代码和功能,只需添加一个添加按钮。解决这个问题的“正确”方法是什么?

谢谢!

0 投票
0 回答
1454 浏览

ios - (UITableViewCell) Does overriding layoutSubviews compete with auto layout or storyboards?

I am making a subclass of UITableView cell.

I have set the cell contentView, backgroundView, and selectedBackgroundView all to a single CGInsetRect (Of the 180.0 rowHeight set in the tableView). My first problem is when I try to assign the inset rect to the image view- the image gets pushed +-5 points to the right. So I've resorted to making the rect manually.

Then I set the text label size and color, but the specific attributes I assigned do not appear until I click the cell.

When I don't set the text label manually- the image pushes the textLabel offscreen, only showing one letter and an "..." ellipsis.

It seems that every modification I make causes something to break, and it seems like my code is competing with some automatic system. Its very frustrating and I don't know what to do or even how to debug this. Any tips on the gotchas of layoutSubviews in UITableViewCell with storyboards would be awesome, because I seem to be missing something critical.

My layoutSubviews

0 投票
3 回答
7630 浏览

ios - 自动布局导致无限 layoutSubviews 循环

我对此感到非常困惑,当我在子视图上使用自动布局时,layoutSubview 方法会无限循环。

我正在做的就是:

这会导致 layoutSubviews 中的无限循环。实际上,即使未调用 applyConstraints 循环发生,阻止它发生的唯一方法是将“translatesAutoresizingMaskIntoConstraints”设置为“是”。

有没有人遇到过/解决过这个问题?

更新 只是为了澄清,这是一个 UIView 子类,在视图控制器中使用。视图本身不使用自动布局,而是在初始化后以老式方式设置框架。

0 投票
1 回答
511 浏览

ios - 如何通过更改方向在 layoutSubview 中使用 CAGradientLayer

CAGradientLayerlayoutSubview. 这可行,但如果我改变方向,旧框架似乎不会消失。

0 投票
1 回答
603 浏览

ios - 设置转换时自定义 UIVIew layoutSubviews 会导致错误(AutoLayout 要求我调用 super 方法,即使我已经是)

我有一个奇怪的问题,我试图覆盖-layoutSubviews以在横向中创建不同的布局。我的方法在纵向上运行良好,但是当我在横向上的一个子视图上设置转换时,出现此错误:

我的方法如下:

如果我将该行注释掉,我不会收到错误消息。有谁知道为什么会发生这种情况?我错过了什么吗?我已经在我的应用程序的其他地方进行了几乎这种精确的转换,并且效果很好。我一生都无法弄清楚这里发生了什么。我愿意尝试几乎任何事情。

0 投票
1 回答
826 浏览

ios7 - iOS 7 UITextView - layoutSubviews 无限循环

我有 UITextView:

我只在 iOS7 上遇到问题:

在每次键盘击键时,layoutSubviews都会在 superview 上调用。在写了几个字符后,它陷入了无限循环并不断调用layoutSubviews

当我删除textView.scrollEnabled = NO;代码行时,一切都按照预期的方式工作。

我真的很想在我的文本视图上禁用滚动。有人知道怎么做吗?

0 投票
0 回答
105 浏览

ios - 使用 UICollectionView 布局更改定时子视图布局

我有一个 UICollectionView,它有一个自定义布局,当设备旋转时会改变其单元格的大小。当布局更改单元格的大小时,会在每个单元格上调用 layoutSubviews。这就是我要的。但是 layoutSubviews 不会以动画方式执行,但单元格大小的变化会。我想同步这两个更改。

例如,现在如果单元格变大,子视图会立即调整大小,然后单元格大小会对其变化进行动画处理。我认为我不应该将动画代码放在 layoutSubviews 中。那是对的吗?处理这个问题的最佳方法是什么?

0 投票
0 回答
1030 浏览

ios - 更改框架时调用的 Autolayout layoutSubviews

这是对事情如何工作的分析,我希望我能找到这种行为的解释,而不必阅读整个互联网关于 iOS6+ 上的自动布局。

我有 3 个类似的场景,如下图所示。唯一的区别是它们如何布局视图viewAviewB

1)

在此处输入图像描述

2)

在此处输入图像描述

3)

在此处输入图像描述

在每种情况下,ViewControllermoveGrandchild每秒都会调用几次方法。在该方法中,它获取一个不是 self.view 的直接子视图的视图,并为其设置一个新框架。新框架与前一个框架的不同之处仅在于origin.x值。人们会期望 aviewB会不断地向屏幕右侧移动,而这正是发生的情况。但是,不同之处在于在每种情况下何时layoutSubviews调用。

以下是每个场景的控制台输出:

1)

2013-11-08 11:31:27.048 ProbaAutoLayout[3641:907] VC viewDidLayoutSubviews

2013-11-08 11:31:27.052 ProbaAutoLayout[3641:907] ViewA layoutSubviews

2013-11-08 11:31:27.054 ProbaAutoLayout[3641:907] ViewB layoutSubviews

2013-11-08 11:31:27.240 ProbaAutoLayout[3641:907] ViewA layoutSubviews

2013-11-08 11:31:27.439 ProbaAutoLayout[3641:907] ViewA layoutSubviews

2013-11-08 11:31:27.639 ProbaAutoLayout[3641:907] ViewA layoutSubviews

...无限重复...

2)

2013-11-08 11:34:06.532 ProbaAutoLayout[3658:907] VC viewDidLayoutSubviews

2013-11-08 11:34:06.536 ProbaAutoLayout[3658:907] ViewA layoutSubviews

2013-11-08 11:34:06.539 ProbaAutoLayout[3658:907] ViewB layoutSubviews

3) 同 2)

在每种情况下,viewB 都在不停地向右连续移动。只有在第一种情况下,才会重复调用layoutSubviewson viewA(的父级)。viewB

当图像显示:// frame set explicitly时,这意味着创建了一个视图,initWithFrame:并且没有创建涉及该视图的约束。当它说:// frame determined by autolayout using constraints时,这意味着涉及该视图的约束已添加到其父视图。

问题是:为什么每次我在场景 1 中更改 viewB 的框架时都会在 viewA 上调用 layoutSubviews 而不是在其他任何情况下?