草庐IT

viewdidlayoutsubviews

全部标签

ios - 切换到 xcode 6 后,viewDidLayoutSubviews 被无限调用

我完美运行的iOS应用程序在切换到xcode6后停止正常工作。我发现在我的一个ViewController中,viewDidLayoutSubviews方法被无限调用,直到内存级别达到某个点,当应用程序因此崩溃时。有没有人知道为什么会发生这种情况?我还注意到,在切换到xcode6后,我的一些View开始看起来很奇怪,但我在Storyboard中修复了这些问题。非常感谢任何形式的帮助!编辑1.-(void)viewDidLayoutSubviews{[superviewDidLayoutSubviews];if(self.showsPlayerControls==NO){self.pla

ios - Collection View Controller 的 viewDidLayoutSubviews 在 iOS 7 中被重复调用

我有一个带有垂直流布局的CollectionViewController,它有一些自定义布局属性可以将其扭曲成一个半圆,但在其他方面相当正常。在iOS6下,viewDidLayoutSubviews被精确调用两次,一次是在View初始化时,另一次是在它获取数据之后。但是在iOS7下,每当CollectionView滚动时,无论是手指按下还是在其自身的插入下,它都会被重复调用。看起来它可能是每个dodscroll一次。有谁知道这可能会在7中发生的原因吗? 最佳答案 好的,根据nickman55在Apple论坛上的这篇帖子,只要重用Co

ios - touchesBegan 之后调用的 viewDidLayoutSubviews - 一次又一次

在aniPhonewordgame我有一个UIScrollView(持有UIImageView)和7个可拖动的自定义UIView最初放置在底部(在ScrollView之外):中单ViewController.m我已经覆盖了viewDidLayoutSubviews,以便它始终设置ScrollView的zoomScale-让UIImageView正好填充100%的屏幕宽度。这适用于纵向和横向模式。当应用程序刚刚启动时:我的问题然而,当我首先捏/缩放/双击ScrollView然后移动七个Tile.m中的一个时。观点:touchesBegan之后突然(不是每次)调用viewDidLayout

ios - `viewDidLayoutSubviews` 中的帧计算

首先,我应该提一下,这主要是一个效率问题。有很多关于在哪里进行帧计算的讨论,其中viewWillAppear太早而viewDidAppear太晚(View已经可见)。常见的答案是在viewDidLayoutSubviews中进行帧计算。问题是,它被多次调用。更糟糕的是,最准确的调用,所有帧都有其最终大小的调用是最后一个。据我所知,没有办法知道最后一个调用是哪个调用。我们过去常常有一个“framesAreSet”标志(初始化为false)和一个检查,如果frame不为零(类似于self.view.frame.size.width!=0)和'framesAreSet'为false,它进去,

ios - 为什么 viewDidLayoutSubviews 只在第一次运行时被调用两次?

这让我发疯。只有在第一次运行时,viewDidLayoutSubviews才会被调用两次。这是我使用的代码:classCICViewController:UIViewController{overridefuncviewDidLoad(){super.viewDidLoad()}funcaddQLabel(qLabel:UILabel,questionString:String,bgrLabel:UILabel){//somecodegoeshere}funcmakeRoundQButtons(qButtons:[UIButton]){//somecodegoeshere}funcad

ios - 我应该在 viewDidLayoutSubviews() 中调用 layoutIfNeeded

我正在根据用户使用的设备更改一些约束并在某个VC上隐藏一些元素。像这样:overridefuncviewDidLayoutSubviews(){ifIphone6==true{self.view.layoutIfNeeded()self.someConst.constant=70self.anotherConst.constant=67self.someButton.hidden=trueself.someView.hidden=trueself.view.layoutIfNeeded()}}现在我想知道是否需要在viewDidLayoutSubviews中调用layoutIfNeed

ios - 相当于只调用一次的 "viewDidLayoutSubviews"?

我正在寻找仅调用一次的viewDidLayoutSubviews的替代方案。我使用此代码将登录移出View:overridefuncviewDidLayoutSubviews(){username_input.center.x-=view.bounds.widthpassword_input.center.x-=view.bounds.widthlogin_button.center.x-=view.bounds.width}我需要这样做一次,这样我就可以在viewDidAppear时用动画移动它。这一切都很好,直到我将我的View分成不同的subview,现在该函数被多次调用。我找不

ios - 使用 UINavigationController 弹出顶 View 时不再调用 viewDidLayoutSubviews

iOS10,这个断断续续的礼物,似乎又换了一个行为。假设两个UIViewController被推送到一个UINavigationController上。在iOS8/9上,调用navigationController?.popViewController(animated:true)弹出顶部UIViewController(例如VC2)导致底部ViewController上的viewDidLayoutSubviews(说VC1)被叫。我们就是靠这个来刷新VC1的。有时VC2会向VC1添加subview(通过数据模型),这需要在弹出回VC1时得到反射(reflect)。需要准确的帧信息。我

ios - 有没有在viewDidLayoutSubviews之后调用的方法?

我需要将CALayer添加到UILabel,但只能在UILabel更改其框架之后。UILabel在viewDidLayoutSubviews中更改其框架方法,如果我在那里添加CALayer,它将创建CALayer的多个实例,因为viewDidLayoutSubviews被多次调用。我尝试在添加新的CALayer之前删除所有CALayer,但有时也会删除文本。我刚用过self.eventAttending!.layer.sublayers=nil将子层设置为空。因此,我认为对我的问题最简单的答案是在viewDidLayoutSubviews中调整框架后简单地添加CALayer。,这让我想

swift - 自定义 UITableViewCell 的 viewDidLayoutSubviews

我想为自定义TableViewCell的subview设置动画。要执行此动画,单元格需要此subview的宽度,它由自动布局约束布局。但是,当我在cellForRowAtIndex函数(mycell.animate())中使用动画函数时,宽度为0,因为subview没有布局但是动画将不起作用。在常规View中,我会使用viewDidLayoutSubviews(),因为这样View就布局好了,我可以获得宽度并执行动画。但是,自定义UITableViewCell的等效功能是什么?我尝试了TableView的willDisplay委托(delegate)函数,但是当我打印出单元格subvi