问题标签 [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.
ios - 如何将内容宽度设置为设备/父宽度的大小?
我的功能滚动中的图像奇怪地出现在较小尺寸的手机中,例如iPhone 5s
、iPhone 6
等。
编辑:我UIScrollView
用来做这个。:)
我尝试将我的代码添加到viewDidLayoutSubviews
其中,viewWillLayoutSubviews
但它似乎不起作用。
//第一次尝试
//第二次尝试
编辑://我如何将图像加载到 featureScroll
下面的链接显示了实际结果,我想摆脱空白,我应该怎么做?
--> https://imgur.com/8AUZh4U.png
预先感谢您的帮助!:)
ios - viewDidLayoutSubviews 被调用两次并且 convertPoint 在第一次渲染时转换不正确
我正在尝试通过使用 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 个位置)。这适用于不同的项目,但我当前的项目似乎以不同的方式处理渲染。
ios - 将应用程序移至后台,调用 viewDidLayoutSubView 并使用 UICollectionView 创建大量警告
这一切都是从很多关于collectionView单元格宽度的警告开始的,每次我按下主页按钮时都会写入控制台。
我认为这是细胞大小的问题,并试图修复它。只有经过一些测试,我才注意到 viewDidLayoutView 被错误的 view.bounds 调用,这使得 collectionView 单元格比集合视图更大(宽度)。
目前,我的解决方法是检查应用程序是否处于后台状态并忽略 viewDidLayoutView。
- 为什么它只发生在 iPad 而不是 iPhone 上?
- 只是现在我才看到这种情况发生。这是iOS中的新东西吗?
- 处理这个问题的正确方法是什么?我不使用自动布局
- 它的调用边界错误,我不想计算所有单元格帧只是为了让用户返回相同的方向。
- 我觉得我在这里遗漏了一些非常基本的东西,或者 iOS 上有一些我不知道的变化。
objective-c - 旋转发生时iOS获取子视图边界
旋转手机后,如何获得子视图的最终边界?
如前所述,我重写了 viewDidLayoutSubview 方法,但只获得了 self.view 的最终边界,子视图使用自动布局来定位。那么有没有办法获得子视图的最终界限。出于某种原因,最好不要对视图本身进行子类化。
ios - iOS 13 - 在更改框架时调用 viewDidLayoutSubviews
在iOS 13中的viewdidlayoutsubviews中进行了一些更改,这导致它在 View Controller 的生命周期后期被调用,一旦它完成了第一次调用(在更改帧上)。这在应用程序中产生了一些奇怪的效果。
我观察到的是,在 iOS13 更改框架之前不会调用viewdidlayoutsubviews,而在新的 iOS 13 中它会被调用。
这是Apple的某种新功能还是一些错误?关于如何阻止这种行为的任何建议?
ios - 为什么 viewDidLayoutSubviews 和 viewWillLayoutSubviews 没有在视图控制器中被调用
我有一个名为 P 的 viewcontoller。每当我旋转屏幕时,都会在 P 中调用 viewDidLayoutSubviews。
但有时它不会在 P 中被调用,我不知道为什么会这样,我不知道如何解决这个问题。
这是没有被调用的场景。
我的视图控制器将另一个名为 A 的视图控制器推到 P 之上。
当我弹出视图控制器 A 并突然将 ipad 从 Portrait 转向 Landscape 时,此时不会调用viewDidLayoutSubviews和viewWillLayoutSubviews 。但是当我再次改变方向时,这些生命周期事件被调用。
当它没有被调用时,在 UI 中元素排列不正确
任何想法如何解决这一问题 ?
ios - viewDidLayoutSubviews & UIApplicationDidBecomeActive 通知
在我的viewDidLoad
中,我添加代码以遵循UIApplication.didBecomeActive
通知,如下所示:
问题是,一旦订阅viewDidLoad
了通知,通知回调在调用之前是否不会触发viewDidLayoutSubviews()
?它发生在我所有 iOS 版本的所有 iOS 设备上,但如果这不是真的,它似乎是错误的根源。试图找出所有无法重现的错误的来源,但不确定这是否是其中之一。
swift - StackView 在 viewDidLayoutSubviews 返回前高度
所以我有一个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
的?好像叫得太早了。height
button
height
viewDidLayoutSubviews
总结一下:stackView
在它自己调整大小之前返回高度