【问题标题】:Apps complied with xCode 11.7 but running on iOS 14+ issues应用程序符合 xCode 11.7 但在 iOS 14+ 问题上运行
【发布时间】:2021-01-28 04:24:28
【问题描述】:

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

由于使用了 testflight,我仍然能够使用 iOS 14 部署到设备上,无论它是在最新的 iOS 上,但我得到了一些非常奇怪的结果!

这是运行在 iOS 13.7 设备上的屏幕应该的样子:

与设备使用更新的 iOS 14.0.1 版本时的结果对比:

有没有其他人目睹过这个!?

几个问题:

  1. 文本如何从黑色变为蓝色!?

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

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

这是在 iTunes Store 中上载出售的任何应用程序的预期行为,该应用程序是在旧版本的 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(selection: $selectedCigarStrength, label: Text("Strenght")) {
                                        
    ForEach(0 ..< cigarStrength.count) {
                                            
                                            
        Text(self.cigarStrength[$0])
                                            
    }
                                    
}

***最新更新***

所以我得到了我的新 MacBook 和 d/l xCode 12,用于部署到装有 iOS 14.0.1 的 iphone,相比之下,屏幕截图如下所示:

如您所见,它看起来完全不同!!!好消息是蓝色图像重新在工作表中呈现正确的图像。坏消息是文本仍然是蓝色的!?我猜开发人员将不得不严格指定未来的文本颜色!?这很奇怪...如果没有声明颜色,我想它应该默认保持 .black... 就像在所有其他版本的 xCode 中一样!?

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

【问题讨论】:

  • 为什么不安装 Xcode 12?
  • @Rob 老实说,我没有内存来下载和安装 xcode 12,苹果炸毁了 IMO 的内存要求。但它比这更大......是苹果对其开发人员的预期行为!?顺便说一句,我将得到一个新的 macboook,所以我会从明天开始 d/l xcode 12,但我会告诉你这是否解决了“不兼容”的问题
  • 你为这些文本提供了什么颜色?
  • @Rob 我已经为文本字段和选择器添加了相当多的“默认”代码。
  • @Rob I d/l xCode 12 并且文本字段颜色保持蓝色.. 似乎“默认”颜色是蓝色,您需要为文本字段指定黑色。

标签: ios xcode ios13 ios14


【解决方案1】:

Me2,但我没有解决方案。我从 xcode 12 切换回 xcode 11.7

【讨论】:

  • 很遗憾这不能成为烫发解决方案,因为您的用户将在他们的手机上更新或开始使用 iOS 14,尤其是。随着新 iPhone12 的推出……您迟早会采用 xCode 12。
【解决方案2】:

根据问题可能是系统更改了默认的textColor属性,如果可以的话,请给出UILabel的textColor的代码。

【讨论】:

  • 我已经为文本字段和选择器添加了几乎“默认”的代码。
  • I d/l xCode 12 并且文本字段颜色保持蓝色.. 似乎“默认”颜色是蓝色,您需要为文本字段指定黑色。
【解决方案3】:

iOS 14 对我来说似乎是 14.0.1,颜色有严重问题!?

如上所述,现在您似乎需要明确地使用 Textfields 和类似文本的 foregroundColor 并将它们“强制”为默认颜色黑色,因为这曾经是默认颜色......不知道为什么他们改变了!

导航标题(navigationBarTitle)也是如此,如果您从一个使用标题的选项卡移动到另一个不需要它的选项卡,它不会出于某种原因删除新视图中的导航栏标题,除非你用navigationBarTitle("")“欺骗”系统,否则强制空白标题。

不知道为什么苹果决定一切都需要像以前的 xcode 和 ios 版本那样显式而不是隐式!?

另一个我认为最大的问题是我发现的 Nil-Coalescing Operator 的评估。

我有以下情况:

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) 才能在 pre-ios 14 时代达到相同的效果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-06
    • 1970-01-01
    • 2021-09-22
    • 1970-01-01
    • 2020-11-21
    • 1970-01-01
    • 1970-01-01
    • 2012-12-17
    相关资源
    最近更新 更多