问题标签 [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.
ios - ios与layoutSubviews相反的是什么
我有一个视图,它在自己的类中退出,并带有自己的 xib。
这个视图被初始化并作为一个子视图添加到我的 viewController 视图中。
当视图被初始化时,方法 layoutSubviews 被调用,我在视图中自定义了一些东西。
但是当视图从父视图(如果有)中移除时调用哪个方法?
例如,对于 ViewController,调用 viewWill/DidDisappear。是否有与 UIView 类似的方法(与 layoutSubviews 相对)?
提前致谢
- -编辑 - -
我刚刚找到了一个在添加和删除子视图时都调用的方法:
如果 newSuperview == 0,您可以自定义删除子视图。
我是对的还是处理这种情况的俗气?
uitableview - 在 UITableViewCell 子类中为 UILabel 设置 UIFont
是否建议设置UIFont
一个UILabel
in layoutSubviews
. 我正在继承一个UITableViewCell
. 如果需要,我们layoutSubview
会调整UIView
框架,所以我不确定是否应该使用它。
另外,是否有类似的方法viewDidLoad
,它只会被调用一次。
我厌倦了在 中设置字体initWithCoder
,但IBOutlet
在 中UILabel
是空的initWithCoder
。
我可以在 中设置UILabel
文本cellForRowAtIndexPath
,因此与此自定义的连接UILabel
是正确的。
UIViewController
注意:- 单元格从in初始化UIStoryboard
。
ios - iOS:需要向搜索栏添加添加按钮
我需要一个允许用户搜索某些东西的搜索控件,然后如果他们没有找到它,他们会按下添加按钮来添加它。我需要在用户输入要搜索的文本时显示添加按钮,我在想文本的右侧。如果我将按钮放在导航栏中,则在用户搜索时它不会显示。
我想使用搜索栏和搜索显示控制器,因为我需要在用户键入时显示结果的功能。这里的第一个答案——在 UISearchBar 左侧添加按钮——似乎不适用于搜索显示控制器。当用户激活搜索字段时,它就会消失。
我已经在这方面走了几条兔子路线:
在这里的第二个答案——在 UISearchBar 左侧添加按钮——我看到建议覆盖书签按钮。这是非常聪明和有效的,但我不知道如何获得“官方”添加按钮图像来覆盖。模拟器似乎不再有图像(?),而且我不喜欢在我的代码中硬编码某些东西的想法。我宁愿(重新)使用 Apple 的添加按钮图标,但我不知道该怎么做。
我尝试创建一个 UISearchBar 的子类,该子类是从具有搜索栏和按钮的笔尖加载的,但我意识到如果我沿着这条路走下去,我认为我必须重新实现 UISearchBar 的界面并转发所有方法调用我正在管理的“真实” UISearchBar。这似乎很恶心。
我尝试创建一个子类 UISearchBar 的视图,并在初始化时动态添加按钮。但在那条道路上,我非常受制于约束。搜索栏中文本字段的约束在视图层次结构中上升了几个级别,我很确定那里至少有一个约束需要删除,同意吗?(因为文本字段当前被限制为延伸到搜索栏的末尾)。
我也尝试了相同的子类并尝试仅在 layoutSubviews 中设置控件的位置,但是当我这样做时,我发现自己必须在搜索栏中放置所有子控件(包括取消按钮等),并且似乎错了。
我仍处于学习模式,而且我的日程安排并不紧。我想以“正确”的方式做到这一点。这意味着我想重用现有的代码和功能,只需添加一个添加按钮。解决这个问题的“正确”方法是什么?
谢谢!
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
ios - 自动布局导致无限 layoutSubviews 循环
我对此感到非常困惑,当我在子视图上使用自动布局时,layoutSubview 方法会无限循环。
我正在做的就是:
这会导致 layoutSubviews 中的无限循环。实际上,即使未调用 applyConstraints 循环发生,阻止它发生的唯一方法是将“translatesAutoresizingMaskIntoConstraints”设置为“是”。
有没有人遇到过/解决过这个问题?
更新 只是为了澄清,这是一个 UIView 子类,在视图控制器中使用。视图本身不使用自动布局,而是在初始化后以老式方式设置框架。
ios - 如何通过更改方向在 layoutSubview 中使用 CAGradientLayer
我CAGradientLayer
在layoutSubview
. 这可行,但如果我改变方向,旧框架似乎不会消失。
ios - 设置转换时自定义 UIVIew layoutSubviews 会导致错误(AutoLayout 要求我调用 super 方法,即使我已经是)
我有一个奇怪的问题,我试图覆盖-layoutSubviews
以在横向中创建不同的布局。我的方法在纵向上运行良好,但是当我在横向上的一个子视图上设置转换时,出现此错误:
我的方法如下:
如果我将该行注释掉,我不会收到错误消息。有谁知道为什么会发生这种情况?我错过了什么吗?我已经在我的应用程序的其他地方进行了几乎这种精确的转换,并且效果很好。我一生都无法弄清楚这里发生了什么。我愿意尝试几乎任何事情。
ios7 - iOS 7 UITextView - layoutSubviews 无限循环
我有 UITextView:
我只在 iOS7 上遇到问题:
在每次键盘击键时,layoutSubviews
都会在 superview 上调用。在写了几个字符后,它陷入了无限循环并不断调用layoutSubviews
。
当我删除textView.scrollEnabled = NO;
代码行时,一切都按照预期的方式工作。
我真的很想在我的文本视图上禁用滚动。有人知道怎么做吗?
ios - 使用 UICollectionView 布局更改定时子视图布局
我有一个 UICollectionView,它有一个自定义布局,当设备旋转时会改变其单元格的大小。当布局更改单元格的大小时,会在每个单元格上调用 layoutSubviews。这就是我要的。但是 layoutSubviews 不会以动画方式执行,但单元格大小的变化会。我想同步这两个更改。
例如,现在如果单元格变大,子视图会立即调整大小,然后单元格大小会对其变化进行动画处理。我认为我不应该将动画代码放在 layoutSubviews 中。那是对的吗?处理这个问题的最佳方法是什么?
ios - 更改框架时调用的 Autolayout layoutSubviews
这是对事情如何工作的分析,我希望我能找到这种行为的解释,而不必阅读整个互联网关于 iOS6+ 上的自动布局。
我有 3 个类似的场景,如下图所示。唯一的区别是它们如何布局视图viewA
和viewB
:
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 都在不停地向右连续移动。只有在第一种情况下,才会重复调用layoutSubviews
on viewA
(的父级)。viewB
当图像显示:// frame set explicitly
时,这意味着创建了一个视图,initWithFrame:
并且没有创建涉及该视图的约束。当它说:// frame determined by autolayout using constraints
时,这意味着涉及该视图的约束已添加到其父视图。
问题是:为什么每次我在场景 1 中更改 viewB 的框架时都会在 viewA 上调用 layoutSubviews 而不是在其他任何情况下?