当我登录Apple拥有的Bug Reporter工具时,我只能看到我的错误.我通常喜欢搜索系统以查看其他人是否在发布之前提交了错误,但我看不出有任何方法可以执行此操作.我只能看到我的错误,并发布新的错误,但我看不到任何方式浏览或搜索整个错误系统.
这是Apple的限制,还是我错过了什么?
我用iOS 10 Beta 7和Xcode 8 beta测试了我的应用程序,一切正常.然而就在几分钟前,我安装了现在可用的两种GM版本,并遇到了一个奇怪的问题.
我在我的应用程序和我正在使用的自定义单元格中使用自定义表格视图单元格cornerRadius并clipsToBounds创建圆形视图.
- (void)awakeFromNib {
[super awakeFromNib];
self.tag2label.layer.cornerRadius=self.tag2label.frame.size.height/2;
self.tag2label.clipsToBounds=YES;
}
Run Code Online (Sandbox Code Playgroud)
这看起来还不错,然而在新的GM版本中,所有圆角的视图都消失了.这发生了UIView,UILabels和UIButtons.
我在下面解决了这个
我将我的项目转换为iOS 10和XCode 8的新测试版.在我使用的应用程序的所有三个区域中:
imageView.layer.cornerRadius = imageView.frame.size.width/2
imageView.clipsToBounds = true
Run Code Online (Sandbox Code Playgroud)
相关图像根本不显示.我尝试清理项目以及构建文件夹,重新启动设备,尝试各种模拟器,重新添加imageView,以编程方式设置关联,UIImage而不是从资产中选择一个.
卸下clipsToBounds线示出了矩形图像无论masksToBounds是true或false.如何在XCode8/iOS10中制作圆形图像?
编辑:该项目是Swift 2.x,尚未更新为Swift 3.0语法.
到目前为止,我所做的一切都很好,直到昨天我将Xcode更新为版本8.
如果我不使用任何约束,我可以看到按钮,但当我将约束应用于它们消失的按钮时,无论是什么或有多少约束(高度,垂直间距,拖尾等......)我都适用.
当我点击按钮时,它们表现正常(事件总是被发送,所以我认为它们实际上位于那里(?)).我尝试改变文本颜色,背景颜色,(甚至添加一个新的UIButton),但最终没有运气.我看不到按钮.当我更改背景颜色时,Centered View我可以在应用程序上看到此更改.最奇怪的部分是当我点击Debug View HierarchyXcode看看发生了什么时,一切看起来都很好; 我可以看到所有按钮都按照我的预期定位.
在iPhone 5(iOS 9.3.5)和iPhone 6(iOS 10)上测试应用程序.
我使用的是Swift 2.3,iOS 10和Xcode 8.
这是Xcode 8上的错误吗?如何解决这个问题?
更新:
我刚刚意识到在UILabel和UIImageView上也出现了相同的约束问题.它们看起来没有约束,但是当我添加任何约束时它们就消失了.
我在视图上设置角半径时遇到问题,因为自从Xcode更新为8以来,视图的帧在大多数情况下设置为1000x1000而不是适当的大小.
这里有一个类似的问题,但我想补充一点信息,希望有人找到答案或解决方法.
在其中一个实例中,我有一个表格视图单元格,其中包含在故事板中创建的图像视图.它的宽度和高度设置为约束常数(至95).角半径设置在layoutSubviews现在工作的范围内:
- (void)layoutSubviews
{
[super layoutSubviews];
self.myImageView.layer.cornerRadius = self.myImageView.frame.size.width/2.0f;
}
Run Code Online (Sandbox Code Playgroud)
所以我在试验和错误中玩了一下,如果我尝试通过调用以下方法设置映像(从远程服务器检索图像)后尝试触发布局,情况似乎会好一点.
self.myImageView.image = image;
[self.myImageView setNeedsLayout];
[self setNeedsLayout];
[self layoutIfNeeded];
Run Code Online (Sandbox Code Playgroud)
在大多数情况下,这仍然不起作用.现在有趣的部分:
我在标签栏上有一个这个视图控制器的情况,当我按下目标视图控制器的标签时,将立即调用布局子视图(从UIApplicationMain)图像视图的大小为1000x1000但是一旦设置了图像然后我调用布局方法然后再次调用布局子视图,正确的图像视图大小为95x95,得到正确的结果.
第二种情况是推动相同类型的视图控制器,现在首先不调用布局,在图像设置和强制布局之后进行唯一的调用.结果是再次具有大小为1000x1000的图像视图,将角半径设置为500并且图像不可见.
那么有一个很好的解决方案来修复这些奇怪的帧值吗?我在多个视图控制器,表视图单元格上遇到同样的问题.这一切都在更新之前一直有效.
谁有任何想法甚至是这个问题的根源是什么?是故事板还是某种设置迁移,还是这个版本的软件引入了一些布局错误?
我现在还从笔尖添加了清醒:
- (void)awakeFromNib
{
[super awakeFromNib];
[self.myImageView setNeedsLayout];
[self setNeedsLayout];
[self layoutIfNeeded];
}
Run Code Online (Sandbox Code Playgroud)
现在强制布局在我的情况下发生至少2次,第二次框架是正确的.仍然这远远不是答案,这是非常糟糕的,我想要它,因为我需要在每个图像视图,按钮的所有单元格上使用它.
我注意到 Xcode 9 有一些很奇怪的地方。当我在我的主情节提要上并更改选择的设备以查看适当格式的视图控制器时,我注意到如果故事板上选定的设备与我部署的设备不同。我已经完成了测试,似乎已采用故事板上所选设备的布局。
有没有人遇到过这个问题?
此问题也存在于 Xcode 9.1 测试版中
ios ×5
ios10 ×2
objective-c ×2
storyboard ×2
bug-tracking ×1
constraints ×1
cornerradius ×1
iphone ×1
uibutton ×1
uiimage ×1
uiimageview ×1
uiview ×1
xcode ×1
xcode8 ×1