应用程序符合 xCode 11.7 但 运行 iOS 14+ 问题
Apps complied with xCode 11.7 but running on iOS 14+ issues
所以我犯了一个“错误”,将我的一个设备升级到 iOS 14(目前是 iOS 14.0.1),我发现现在我不能再部署到那个通过 xCode 的设备,因为我仍在使用 xCode 11.7 而不是最新版本的 xCode 12.
进行开发
我仍然可以使用 iOS 14 部署到设备,因为使用了 testflight,无论它是最新的 iOS,但我得到了一些非常奇怪的结果!!
这是屏幕应该的样子,在具有 iOS 13.7:
的设备上是 运行
与设备在较新的 iOS 14.0.1 版本上时的结果对比:
有没有其他人看到过这个!?
几个问题:
文字怎么由黑变蓝!?
主图全蓝vs渲染真图!?
在“原产地”选择器的情况下,国旗的图像也全是蓝色,而渲染是否正确?
这是任何上传到 iTunes Store 中销售的应用程序的预期行为吗,它是在 xCode 的旧版本下编译的,我的情况是 xCode 11.7,与最新版本相比?
我的意思是在这种情况下,任何人都下载了由旧版本 xCode 创建的应用程序的当前版本,但该用户的 phone 上有最新版本的 iOS 】,app会不会变得一团糟!?如果是这样,苹果在想什么!?
任何人都可以提供他们绕过它的方法,或者他们经历了什么吗?
*** 更新 ***
提供文本字段和选择器的代码:
这是“默认”文本字段:
TextField("Cigar Name", text: $model.cigarName)
这是自定义选择器的代码:
NavigationLink(destination: CountryPicker(cCode: $countryCode, cName: $countryName)) {
Text("Origin")
if countryCode != "" {
Spacer()
HStack() {
Image(uiImage: UIImage(named: "CountryPicker.bundle/Images/\(countryCode)")!)
.clipShape(Circle())
Text(countryName)
}
}
}
“默认”选择器代码:
Picker(selection: $selectedCigarStrength, label: Text("Strenght")) {
ForEach(0 ..< cigarStrength.count) {
Text(self.cigarStrength[[=15=]])
}
}
*** 最新更新 ***
所以我得到了我的新 MacBook 和 d/l xCode 12,用于部署到 iphone 和 iOS 14.0.1,这就是屏幕截图比较:
如您所见,它看起来很不一样!!!好消息是蓝色图像返回到 sheet 中渲染正确的图像。坏消息是文本仍然是蓝色的!?我想开发人员以后将不得不严格指定文本颜色!?这很奇怪……如果没有声明颜色,我想它应该默认为 .black……就像在 xCode!?
的所有其他版本中一样
另请注意,表单不再延伸到屏幕边缘,日期选择器也发生了真正的变化(我真的很喜欢,最后他们在新 OS 中实际改进了一些东西)。
Me2 但我没有解决办法。我从 xcode 12 切换回 xcode 11.7
根据问题,可能应该是系统更改了默认文本颜色属性,如果可能,请提供有关UILabel文本颜色的代码。
看来 iOS 14,对我来说 14.0.1,颜色有严重问题!?
如上所述,现在您似乎需要明确文本字段和类似文本的 foregroundColor,并将它们“强制”为黑色的默认颜色,因为它曾经是默认颜色...不确定为什么他们改变了!
导航标题 (navigationBarTitle) 也是如此,如果您从一个使用标题的选项卡移动到另一个不需要它的选项卡,由于某种原因它不会删除新视图中的导航栏标题, 除非你用navigationBarTitle("")
“欺骗”系统,否则强制使用空白标题。
不知道为什么苹果决定一切都需要显式而不是隐式,就像在以前的 xcode 和 ios 版本中一样!?
另一个我认为是最大的问题,我发现的是 Nil-Coalescing 运算符的评估。
我有以下情况:
Button(action: {
if (self.viewRouter.currentView != "menu") {
self.viewRouter.currentView = "menu"
}
}) {
Image("menu")
.renderingMode(.template) //**** REQUIRED!!!!
}
.foregroundColor(self.viewRouter.currentView == "menu" ? .blue : .gray)
这个简单的条件表明,如果当前单击的视图是“菜单”,则按钮的颜色应为蓝色,如果不是并且正在显示不同的视图,则按钮的颜色应为灰色...结束结果是按钮是黑色的,无论我在选项卡栏中 select 是哪个,它们都保持黑色并且不会像在我的设备上那样改变颜色 运行 iOS 13.6 !?
*** 更新 ***
再次ios 14 变得更露骨了!!您需要添加 .renderingMode(.template) 才能在 pre-ios 14 时代获得相同的结果。
所以我犯了一个“错误”,将我的一个设备升级到 iOS 14(目前是 iOS 14.0.1),我发现现在我不能再部署到那个通过 xCode 的设备,因为我仍在使用 xCode 11.7 而不是最新版本的 xCode 12.
进行开发我仍然可以使用 iOS 14 部署到设备,因为使用了 testflight,无论它是最新的 iOS,但我得到了一些非常奇怪的结果!!
这是屏幕应该的样子,在具有 iOS 13.7:
的设备上是 运行与设备在较新的 iOS 14.0.1 版本上时的结果对比:
有没有其他人看到过这个!?
几个问题:
文字怎么由黑变蓝!?
主图全蓝vs渲染真图!?
在“原产地”选择器的情况下,国旗的图像也全是蓝色,而渲染是否正确?
这是任何上传到 iTunes Store 中销售的应用程序的预期行为吗,它是在 xCode 的旧版本下编译的,我的情况是 xCode 11.7,与最新版本相比?
我的意思是在这种情况下,任何人都下载了由旧版本 xCode 创建的应用程序的当前版本,但该用户的 phone 上有最新版本的 iOS 】,app会不会变得一团糟!?如果是这样,苹果在想什么!?
任何人都可以提供他们绕过它的方法,或者他们经历了什么吗?
*** 更新 ***
提供文本字段和选择器的代码:
这是“默认”文本字段:
TextField("Cigar Name", text: $model.cigarName)
这是自定义选择器的代码:
NavigationLink(destination: CountryPicker(cCode: $countryCode, cName: $countryName)) {
Text("Origin")
if countryCode != "" {
Spacer()
HStack() {
Image(uiImage: UIImage(named: "CountryPicker.bundle/Images/\(countryCode)")!)
.clipShape(Circle())
Text(countryName)
}
}
}
“默认”选择器代码:
Picker(selection: $selectedCigarStrength, label: Text("Strenght")) {
ForEach(0 ..< cigarStrength.count) {
Text(self.cigarStrength[[=15=]])
}
}
*** 最新更新 ***
所以我得到了我的新 MacBook 和 d/l xCode 12,用于部署到 iphone 和 iOS 14.0.1,这就是屏幕截图比较:
如您所见,它看起来很不一样!!!好消息是蓝色图像返回到 sheet 中渲染正确的图像。坏消息是文本仍然是蓝色的!?我想开发人员以后将不得不严格指定文本颜色!?这很奇怪……如果没有声明颜色,我想它应该默认为 .black……就像在 xCode!?
的所有其他版本中一样另请注意,表单不再延伸到屏幕边缘,日期选择器也发生了真正的变化(我真的很喜欢,最后他们在新 OS 中实际改进了一些东西)。
Me2 但我没有解决办法。我从 xcode 12 切换回 xcode 11.7
根据问题,可能应该是系统更改了默认文本颜色属性,如果可能,请提供有关UILabel文本颜色的代码。
看来 iOS 14,对我来说 14.0.1,颜色有严重问题!?
如上所述,现在您似乎需要明确文本字段和类似文本的 foregroundColor,并将它们“强制”为黑色的默认颜色,因为它曾经是默认颜色...不确定为什么他们改变了!
导航标题 (navigationBarTitle) 也是如此,如果您从一个使用标题的选项卡移动到另一个不需要它的选项卡,由于某种原因它不会删除新视图中的导航栏标题, 除非你用navigationBarTitle("")
“欺骗”系统,否则强制使用空白标题。
不知道为什么苹果决定一切都需要显式而不是隐式,就像在以前的 xcode 和 ios 版本中一样!?
另一个我认为是最大的问题,我发现的是 Nil-Coalescing 运算符的评估。
我有以下情况:
Button(action: {
if (self.viewRouter.currentView != "menu") {
self.viewRouter.currentView = "menu"
}
}) {
Image("menu")
.renderingMode(.template) //**** REQUIRED!!!!
}
.foregroundColor(self.viewRouter.currentView == "menu" ? .blue : .gray)
这个简单的条件表明,如果当前单击的视图是“菜单”,则按钮的颜色应为蓝色,如果不是并且正在显示不同的视图,则按钮的颜色应为灰色...结束结果是按钮是黑色的,无论我在选项卡栏中 select 是哪个,它们都保持黑色并且不会像在我的设备上那样改变颜色 运行 iOS 13.6 !?
*** 更新 ***
再次ios 14 变得更露骨了!!您需要添加 .renderingMode(.template) 才能在 pre-ios 14 时代获得相同的结果。