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

ios - 如何将内容宽度设置为设备/父宽度的大小?

我的功能滚动中的图像奇怪地出现在较小尺寸的手机中,例如iPhone 5siPhone 6等。

编辑:我UIScrollView用来做这个。:)

我尝试将我的代码添加到viewDidLayoutSubviews其中,viewWillLayoutSubviews但它似乎不起作用。

//第一次尝试

//第二次尝试

编辑://我如何将图像加载到 featureScroll

下面的链接显示了实际结果,我想摆脱空白,我应该怎么做?

--> https://imgur.com/8AUZh4U.png

预先感谢您的帮助!:)

0 投票
0 回答
104 浏览

ios - viewDidLayoutSubviews 被调用两次并且 c​​onvertPoint 在第一次渲染时转换不正确

我正在尝试通过使用 UIImageView 并在视图首次呈现给用户时将其框架设置在与我的 UITabBarItem 相同的框架中来为 UITabBar 项目设置动画。在另一个项目中,它在 viewDidAppear 上运行良好,日志显示该框架与我原始项目中的框架位于同一框架中(我有 5 个项目,第 5 个项目始终位于 333, 1)。在我的原始项目中,viewDidAppear 将返回 0, 0 并在 viewDidLayoutSubviews 上返回 333, 1。我将代码移动到 viewDidLayoutSubviews 上进行动画处理,发现它被调用了两次,并在第一次调用时返回 2 个值,0、0,在第二次调用时返回 333、1。

有没有办法在 viewDidLayoutSubviews 完成第二次调用后启动动画?

我尝试在 viewWillAppear、viewDidAppear 和 viewDidLayoutSubviews 中移动动画代码。

viewWillAppear 和 viewDidAppear 导致转换后的 CGPoint 作为标签栏的原始 CGPoint (0, 617)。

viewDidLayoutSubviews 在第一次调用时将转换后的 CGPoint 作为 Tab Bar (0, 687) 的新 CGPoint 并开始动画,并在第二次调用时动画完成后的实际帧。

以下代码是我的 viewDidLayoutSubviews 上的代码:

以下代码用于 startAnimation:withTag: :

此方法中不再使用 tag 参数。

我希望输出 UIImage 位于预期的 UITabBarItem 图像的顶部(在这种情况下,是 UITabBar 中的第 5 个位置)。这适用于不同的项目,但我当前的项目似乎以不同的方式处理渲染。

0 投票
1 回答
462 浏览

ios - 将应用程序移至后台,调用 viewDidLayoutSubView 并使用 UICollectionView 创建大量警告

这一切都是从很多关于collectionView单元格宽度的警告开始的,每次我按下主页按钮时都会写入控制台。

我认为这是细胞大小的问题,并试图修复它。只有经过一些测试,我才注意到 viewDidLayoutView 被错误的 view.bounds 调用,这使得 collectionView 单元格比集合视图更大(宽度)。

目前,我的解决方法是检查应用程序是否处于后台状态并忽略 viewDidLayoutView。

  1. 为什么它只发生在 iPad 而不是 iPhone 上?
  2. 只是现在我才看到这种情况发生。这是iOS中的新东西吗?
  3. 处理这个问题的正确方法是什么?我不使用自动布局
  4. 它的调用边界错误,我不想计算所有单元格帧只是为了让用户返回相同的方向。
  5. 我觉得我在这里遗漏了一些非常基本的东西,或者 iOS 上有一些我不知道的变化。
0 投票
1 回答
27 浏览

objective-c - 旋转发生时iOS获取子视图边界

旋转手机后,如何获得子视图的最终边界?

如前所述,我重写了 viewDidLayoutSubview 方法,但只获得了 self.view 的最终边界,子视图使用自动布局来定位。那么有没有办法获得子视图的最终界限。出于某种原因,最好不要对视图本身进行子类化。

0 投票
1 回答
557 浏览

ios - iOS 13 - 在更改框架时调用 viewDidLayoutSubviews

iOS 13中的viewdidlayoutsubviews中进行了一些更改,这导致它在 View Controller 的生命周期后期被调用,一旦它完成了第一次调用(在更改帧上)。这在应用程序中产生了一些奇怪的效果。

我观察到的是,在 iOS13 更改框架之前不会调用viewdidlayoutsubviews,而在新的 iOS 13 中它会被调用。

这是Apple的某种新功能还是一些错误?关于如何阻止这种行为的任何建议?

0 投票
0 回答
103 浏览

ios - 为什么 viewDidLayoutSubviews 和 viewWillLayoutSubviews 没有在视图控制器中被调用

我有一个名为 P 的 viewcontoller。每当我旋转屏幕时,都会在 P 中调用 viewDidLayoutSubviews。

但有时它不会在 P 中被调用,我不知道为什么会这样,我不知道如何解决这个问题。

这是没有被调用的场景。

我的视图控制器将另一个名为 A 的视图控制器推到 P 之上。

当我弹出视图控制器 A 并突然将 ipad 从 Portrait 转向 Landscape 时,此时不会调用viewDidLayoutSubviewsviewWillLayoutSubviews 。但是当我再次改变方向时,这些生命周期事件被调用。

当它没有被调用时,在 UI 中元素排列不正确

任何想法如何解决这一问题 ?

0 投票
2 回答
39 浏览

swift - 取消激活将它们链接在一起的 2 个对象之间的约束

你可以在下面的 gif 中看到我的 swift 代码。让用户选择其中一个图像视图,然后使用滑块增加或减小该图像视图的大小。问题是当图像视图移动时,另一个图像视图跟随它,这不应该发生。因此,应在代码第一次运行但选择其中一个图像视图之后设置约束。将它们链接在一起的约束应该被停用。造成这种情况的一条线是

** greenMove.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant :0),**

在此处输入图像描述

0 投票
0 回答
44 浏览

ios - viewDidLayoutSubviews & UIApplicationDidBecomeActive 通知

在我的viewDidLoad中,我添加代码以遵循UIApplication.didBecomeActive通知,如下所示:

问题是,一旦订阅viewDidLoad了通知,通知回调在调用之前是否不会触发viewDidLayoutSubviews()?它发生在我所有 iOS 版本的所有 iOS 设备上,但如果这不是真的,它似乎是错误的根源。试图找出所有无法重现的错误的来源,但不确定这是否是其中之一。

0 投票
1 回答
33 浏览

swift - StackView 在 vi​​ewDidLayoutSubviews 返回前高度

所以我有一个scrollView, 里面scrollView是一个stackView包含views屏幕中的每个。

问题是我stackView有很多可隐藏的,views所以我需要containsVieww's height根据我的stackView's height

我的伪代码应该是这样的:

这是问题所在:

首先init,我的[label1,2,3].isHidden = true,我stackViewHeight的是500

当 myonHitButton被调用时, my [label1,2,3].isHidden = false, mystackViewHeight仍然是,500但屏幕显示正确,这些labels现在可见并且 mystackView被拉伸。当然,我scrollView的 is 显示不正确。

然后我onHitButton再次点击我的,那些labels是隐藏的,我stackView的在屏幕上缩小但stackViewHeight返回了850

应该是反过来的。

我也试过on another call 并返回正确print的?好像叫得太早了。heightbuttonheightviewDidLayoutSubviews

总结一下:stackView在它自己调整大小之前返回高度