Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 视图显示在调试视图层次结构中,但不显示在设备/sim卡上_Ios_Iphone_Xcode_View_Uiview - Fatal编程技术网

Ios 视图显示在调试视图层次结构中,但不显示在设备/sim卡上

Ios 视图显示在调试视图层次结构中,但不显示在设备/sim卡上,ios,iphone,xcode,view,uiview,Ios,Iphone,Xcode,View,Uiview,这个问题使我非常困惑。我有一个小的UI视图,用来显示选择了哪个按钮。但是,它没有显示在我的应用程序中-它应该在“本地活动”下,但没有显示: 那很好,我想,我只是调试视图层次结构,看看它在哪里!而且它看起来正是它应该在的地方: 有人知道这里发生了什么吗?谢谢你的帮助 我真蠢——我把它修好了。我不确定为什么它在视图调试器中显示为顶部,但它位于另一个UIView的后面。我找到了导致此问题的原因 我以编程方式在视图控制器内创建了两个子视图(子视图A和子视图B);尽管帧的大小和位置、alpha值以及

这个问题使我非常困惑。我有一个小的UI视图,用来显示选择了哪个按钮。但是,它没有显示在我的应用程序中-它应该在“本地活动”下,但没有显示:

那很好,我想,我只是调试视图层次结构,看看它在哪里!而且它看起来正是它应该在的地方:


有人知道这里发生了什么吗?谢谢你的帮助

我真蠢——我把它修好了。我不确定为什么它在视图调试器中显示为顶部,但它位于另一个UIView的后面。

我找到了导致此问题的原因

我以编程方式在视图控制器内创建了两个子视图(子视图A和子视图B);尽管帧的大小和位置、alpha值以及所有其他常见的可见性问题都已检查出来,但这两个问题都没有出现在我的设备上。子视图A是视图控制器视图的子视图,子视图B是子视图A的子视图。这两个视图在我的设备上都不可见,但当我查看视图调试器层次结构时,我能够看到子视图B(即使其超视图子视图A不可见)

长话短说,当我删除了改变子视图A层掩码属性的代码时,这个问题得到了解决。下面是在层上调用的确切方法:

extension CALayer {
    func round(corners: UIRectCorner, withRadius radius: CGFloat, withBounds: CGRect? = nil) {
        let path = UIBezierPath(roundedRect: withBounds ?? bounds, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius))
        let mask = CAShapeLayer()
        mask.path = path.cgPath
        self.mask = mask
    }
}
我在过去使用过这种方法,没有任何问题,所以我确信这个问题是间接的,但也许这将为将来的人指明正确的方向

编辑
问题不仅在于上面显示的代码,还在于调用round()后我正在更改子视图A的帧。一旦我确保在给定最终位置和大小后只对()子视图A进行取整,设备和调试器的所有问题都得到了解决

我在Xcode 9中遇到了同样的问题。原因是我在viewDidLoad中将视图的alpha设置为0,但没有将alpha设置回1.0。
出于某种原因,调试视图层次结构显示它的alpha为1.0…

我也有同样的问题,但当我重新连接插座时,它又开始工作。

您希望在设备上看到什么?按钮的背景色是什么,可能是您的按钮覆盖了要显示为选中状态的视图。并描述如何突出显示UIView。背景是UIColor.clearColor(),从我的屏幕截图很难分辨,但在3D视图中,它肯定位于“活动”按钮的顶部。迈克-我希望在“活动”按钮下看到白线,你可以在“查看调试层次结构”中看到,但在正在运行的应用程序上看不到。我很愚蠢-我修复了它。我不知道为什么它会在视图调试器中显示为顶部,但它位于另一个UIView后面。对我来说,
alpha
在“用户定义的运行时属性”中被设置为
0
。我遇到了这种情况,并且在将视图alpha设置为0 lol的转换中重用了代码。我也有同样的问题。尝试了所有的东西。。与make alpha 1一样,hidden属性设置为false,通过[[UIApplication sharedApplication].keyWindow将所有其他视图置于前面:yourSubview]。如果有人发现了,请给我建议一些其他的解决方案。@KyleBashour:你是怎么发现的?@nsganster哇,这正是我遇到的问题。谢谢你提出来。值得注意的是,视图调试器中显示了零alpha内容,但应用程序中没有。您是如何将视图向前推进的?这件事发生在meThis身上,我也是如此。对我有效的解决方案是对视图进行子类化,并在
layoutSubviews()
中进行圆角处理,正如这里所讨论的:谢谢,您刚才为我节省了大量的时间。对我来说,有一些屏幕动画将alpha设置为0,这将使视图显示在视图调试器中,而不是在设备中。