应用程序符合 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 版本上时的结果对比:

有没有其他人看到过这个!?

几个问题:

  1. 文字怎么由黑变蓝!?

  2. 主图全蓝vs渲染真图!?

  3. 在“原产地”选择器的情况下,国旗的图像也全是蓝色,而渲染是否正确?

这是任何上传到 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 时代获得相同的结果。