问题标签 [viewdidlayoutsubviews]

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 回答
18736 浏览

ios - UIViewController viewDidLayoutSubviews

我很难弄清楚为什么 Erica Sadun 在她的食谱示例 Ch07-11 中执行以下操作(在 viewDidLayoutSubviews 中调用 viewDidAppear)。也许这两种方法应该调用另一种方法?

见:https ://github.com/erica/iOS-5-Cookbook/tree/master/C07

知道为什么吗?

0 投票
2 回答
3637 浏览

ios - 如何在 viewDidLayoutSubviews 中获得正确的视图高度?

在上面,无论设备处于什么方向,始终为 1024。即使旋转设备也会导致view.height被调用,它仍然会输出 1024。viewDidLayoutSubviews

然而,视图渲染得很好。我到底错过了什么?

0 投票
1 回答
427 浏览

ios7 - 如何让 canDisplayBannerAds 产生 viewDidLayoutSubview 回调?

在我的代码中,当我canDisplayBannerAds=YES在视图控制器上进行设置时,我会viewDidLayoutSubviews在广告消失时收到回调,但在广告出现时不会收到回调。我猜这是因为self.originalContentView当您设置canDisplayBannerAdsYES时,Apple 将视图控制器的原始 self.view 移动到了。

我的问题是,对此有什么合理的解决方法?

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 投票
0 回答
462 浏览

ios - Xcode 6 beta 和可调整大小的 Iphone:如何获取当前的屏幕尺寸

我尝试使我的视图完全动态化,以便视图可以适合任何屏幕尺寸。此刻我得到屏幕宽度和高度进行计算,如下所示:

问题是“Resizable Iphone”模拟器总是给我 768 的宽度和 1024 的高度(如 iPad)。当我更改模拟器底部的宽度和高度值时,这并不重要……有什么新功能可以用来进行更好的测试吗?

编辑:

我仍然不确定如何准确地处理这个......目前我在“viewDidLayoutSubviews”中计算我的子视图的大小,因为这是显示“可调整大小的 Iphone 模拟器”的正确宽度和高度的唯一方法,问题是当我在这个方法中计算我的所有东西时,每次滚动或触摸 UI 时都会调用它,所以它可能会被调用数百次......当我尝试计算我的视图时“ViewDidAppear”为时已晚,重新计算后看起来真的很奇怪......

0 投票
1 回答
866 浏览

xcode - Xcode - viewDidLayoutSubviews

我在 viewController 中有一个视图,我想在左侧的 viewController 之外启动较小的视图,并在我按下按钮时将其动画到中心。所以我做了这样的:

它工作得很好!问题是我在那个较小的视图中有一个文本视图,每次我开始编辑它时它都会跳到它所在的主视图控制器之外,我必须再次按下按钮才能把它带进去. 如何解决这个问题?

PS:当我开始像这样编辑文本视图时,我尝试将其定位到中心:

但它不起作用。并且该方法正确连接到textView(委托)

PS2:我的 viewController 中也有 imagePickerController。

0 投票
0 回答
463 浏览

objective-c - viewdidload 中的帧大小不正确,viewdidappear

使用iOS8。视图的帧大小在和UIViewController's中不正确。我可以从中获取正确的帧大小并执行视图更新(我需要使布局无效),但是处理旋转变得毫无意义,并且这两种方法将其淘汰。viewDidLoadviewDidAppearviewDidLayoutSubviewsviewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator

理想情况下willTransitionToSize会被调用而不是didLayoutSubviews,但不能同时调用,因为我不知道我是否真的需要使布局无效并执行无意义的计算、布局等。

我想避免使用与旋转和帧大小更改有关的各种魔术标志。

在发生任何这种情况之前,有没有办法获得视图控制器视图的“真实”大小?

编辑

这是一些示例代码:

0 投票
1 回答
1504 浏览

ios - 为什么更改 UILabel 文本会触发 viewDidLayoutSubviews 事件?

viewDidLayoutSubviews我的 ViewController 中触发了很多事件。最终我缩小到触发事件的单行代码:

UILabel在 ViewController 的一个子视图中添加self.view。为什么改变a的文字UILabel会引起边界变化?在viewDidLayoutSubviews文档中:

当视图控制器视图的边界发生变化时,视图会调整其子视图的位置,然后系统调用此方法。

ps 我确信 debugLabel 字体大小足够小以适合其框架。

0 投票
0 回答
109 浏览

ios - viewDidLayoutSubviews 中应用程序终止的内存错误

setBackgroundImageviewDidLayoutSubviews. viewDidLayoutSubviews它无限地呼唤。因此,随着应用程序的终止,内存会增加。我究竟做错了什么?它只发生在 iPhone 5s 中,相同的代码在 iPad Air 和 iPhone 4s 中运行良好。

0 投票
0 回答
100 浏览

ios - UICollectionView 不尊重布局

我想在旋转后更改我的集合视图布局以更改单元格大小。在模拟器中效果很好。在 iPhone 6 上没有。

代码如下: