应用程序符合xCode 11.7,但运行在iOS 14+;问题

应用程序符合xCode 11.7,但运行在iOS 14+;问题,ios,xcode,ios13,ios14,Ios,Xcode,Ios13,Ios14,因此,我犯了一个“错误”,将我的一台设备升级到iOS 14(目前为iOS 14.0.1),我发现现在我无法再通过xCode部署到该设备,因为我仍在使用xCode 11.7开发,而不是最新版本的xCode 12 我仍然能够使用iOS 14部署到设备上,因为使用了testflight,不管它是在最新的iOS上,但是我得到了一些非常奇怪的结果 这就是屏幕的外观,它在iOS 13.7设备上运行: 与设备在较新的iOS 14.0.1版本上时的结果相比: 还有谁目睹了这一切 两个问题: 文本如何从黑色变

因此,我犯了一个“错误”,将我的一台设备升级到iOS 14(目前为iOS 14.0.1),我发现现在我无法再通过xCode部署到该设备,因为我仍在使用xCode 11.7开发,而不是最新版本的xCode 12

我仍然能够使用iOS 14部署到设备上,因为使用了testflight,不管它是在最新的iOS上,但是我得到了一些非常奇怪的结果

这就是屏幕的外观,它在iOS 13.7设备上运行:

与设备在较新的iOS 14.0.1版本上时的结果相比:

还有谁目睹了这一切

两个问题:

  • 文本如何从黑色变为蓝色

  • 主图像全部为蓝色,而不是渲染真实图像

  • 对于“原产地”选择器,国旗图像也全部为蓝色,对吗

  • 这是在iTunes商店中上传销售的任何应用程序的预期行为吗?iTunes商店是在旧版本的xCode(我的案例是xCode 11.7)和最新版本下编译的

    我的意思是,在这种情况下,任何人都会下载在旧版本xCode中创建的应用程序的当前版本,但该用户的手机上有最新版本的iOS,应用程序会像那样变得一团糟吗!?如果是这样,苹果是怎么想的

    其他人能提供他们绕过它的方法吗,或者他们经历了什么

    ***更新***

    为文本字段和选择器提供代码:

    以下是“默认”文本字段:

    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(选择:$selectedCigarStrength,标签:Text(“strength”)){
    ForEach(0..<雪茄强度.计数){
    文本(self.cigarStrength[$0])
    }
    }
    
    ***最新更新***

    因此,我得到了新的MacBook和d/l xCode 12,用于部署到带有iOS 14.0.1的iphone上,相比之下,屏幕截图是这样的:

    正如你所看到的,它看起来很不一样!!!好消息是蓝色图像返回到工作表中渲染正确的图像。。坏消息是文本仍然是蓝色的!?我想开发人员必须严格指定文本颜色!?这很奇怪。。。如果没有声明颜色,我想它应该保持不变。默认为黑色。。。就像它在所有其他版本的xCode中一样


    还要注意的是,表单不再延伸到屏幕边缘,日期选择器也确实发生了变化(我实际上很喜欢,最后他们在新操作系统中做了一些改进)。

    Me2但我没有解决方案。基于这个问题,我从xcode 12切换回xcode 11.7

    可能是系统更改的默认textColor属性,如果可能,请显示UILabel的textColor代码。

    对于我14.0.1来说,iOS 14似乎有严重的颜色问题

    如上所述,现在看来,对于文本字段和类似文本,您需要显式地使用foregroundColor,并“强制”它们使用默认的黑色,就像以前的默认颜色一样。。。不知道他们为什么要改变

    导航标题(WaveTraveButer)同样如此,如果从一个使用标题的标签移到另一个不需要的标签,它将不会因为某些原因而删除新视图中的导航栏标题,除非您用“代码”>“导航”标题(“”)< /代码>“欺骗”该系统。 不知道为什么苹果决定一切都需要显式还是隐式,就像以前的xcode和ios版本一样

    另一个,我认为是我发现的最大问题,是对零聚结算子的评估

    我有以下情况:

    Button(action: {
                
        if (self.viewRouter.currentView != "menu") {
                   
            self.viewRouter.currentView = "menu"
                    
        }
                
    }) {
                
        Image("menu")
            .renderingMode(.template) //**** REQUIRED!!!!
                
    }
    .foregroundColor(self.viewRouter.currentView == "menu" ? .blue : .gray)
    
    这个简单的条件是,如果当前单击的视图是“菜单”,则按钮的颜色应为蓝色,如果不是,则显示不同的视图,则按钮的颜色应为灰色。。。最终的结果是,按钮是黑色的,无论我在选项卡栏中选择哪个按钮,它们都保持黑色,并且不会像在我运行iOS 13.6!的设备上那样改变颜色

    ***更新***


    ios 14再次变得更加明确!!你需要添加.renderingMode(.template),才能在ios 14之前的时代达到同样的效果。

    为什么你不使用Xcode 12?@Rob老实说,我没有足够的内存下载和安装Xcode 12,这让苹果的内存需求大为降低。但它比这更大。。。这是苹果对其开发者的预期行为吗!?顺便说一句,我将得到一个新的macboook,所以我将从明天开始使用d/l xcode 12,但我会让你知道这是否解决了“不兼容”的问题,你为这些文本提供了什么颜色?@Rob我为文本字段和选择器添加了几乎“默认”的代码。@Rob I d/l xcode 12和文本字段的颜色仍然是蓝色。。看起来“默认”颜色是蓝色的,你需要为文本字段指定黑色。我为文本字段和选择器添加了相当多的“默认”代码。i d/l xCode 12和文本字段颜色仍然是蓝色。。“默认”颜色似乎是蓝色,您需要为文本字段指定黑色。遗憾的是,这不能作为烫发解决方案,因为您的用户将在手机上更新或开始使用iOS 14,特别是随着新iPhone12的推出。。。您迟早要采用xCode 12。
    Button(action: {
                
        if (self.viewRouter.currentView != "menu") {
                   
            self.viewRouter.currentView = "menu"
                    
        }
                
    }) {
                
        Image("menu")
            .renderingMode(.template) //**** REQUIRED!!!!
                
    }
    .foregroundColor(self.viewRouter.currentView == "menu" ? .blue : .gray)