如何解决由于现有项目的Xcode 12 uitextfields具有黑色背景
几天前,我将Xcode 11升级到Xcode 12,因为我的应用无法正确构建。问题之一是我的白色uitextfields变成了黑色!在下面的图像中,它应该在红色矩形内以堆栈形式显示4个uitextfield,但是现在您什么也看不到,因为它们变成了黑色(The并没有消失)!我什么都没做,只是将Xcode升级到版本12。我在iOS 12.x,iOS 13.x和iOS 14上进行了测试,所有版本的uitextfields现在都变黑了,只是因为我使用Xcode 12。
我所有的uitextfields都变黑了。我的应用程序不支持暗模式,但是在Xcode 11.4中我没有任何问题。
我还尝试使用以下代码解决问题:
if (@available(iOS 13.0,*)) {
if ([self.window respondsToSelector:NSSelectorFromString(@"overrideUserInterfaceStyle")]) {
[self.window setValue:@(UIUserInterfaceStyleLight) forKey:@"overrideUserInterfaceStyle"];
}
}
但没有成功:(
唯一的解决方案是将所有uitextfields的背景手动设置为白色,但这令人沮丧。您是否知道导致uitextfields为黑色而不是默认的白色的原因,以及如何从中心位置对其进行修复?
解决方法
我在Xcode 12中使用xib。 UITextField backgroundColor默认为透明色。 您只需要更改textField backgroundColor。
,尝试像这样在场景委托中展示您的第一个控制器并覆盖窗口用户界面:
func scene(_ scene: UIScene,willConnectTo session: UISceneSession,options connectionOptions: UIScene.ConnectionOptions) {
// Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
// If using a storyboard,the `window` property will automatically be initialized and attached to the scene.
// This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
guard let windowScene = (scene as? UIWindowScene) else { return }
window = UIWindow(windowScene: windowScene)
window?.makeKeyAndVisible()
let controller = YourFirstViewController()
window?.rootViewController = controller
if #available(iOS 13.0,*) {
self.window?.overrideUserInterfaceStyle = .light
}
}
如果您不能解决问题并手动设置bg颜色,我建议编写一个扩展程序,将bg设置为白色,如下所示:
extension UIViewController {
func myTextField(tf: UITextField,placeHolder: String,placholderColor: UIColor,textColor: UIColor) {
let textfield = tf
textfield.backgroundColor = .white
textfield.font = .systemFont(ofSize: 16,weight: .regular)
textfield.textColor = textColor
textfield.layer.cornerRadius = 14
textfield.clipsToBounds = true
textfield.attributedPlaceholder = NSAttributedString(string: placeHolder,attributes: [.foregroundColor: placholderColor])
}
}
使用方法:
let yourTextField = UITextField()
myTextField(tf: yourTextField,placeHolder: "Your placeHolder...",placholderColor: .yourColor,textColor: .yourColor)
如果要进行tf填充,请添加此扩展名:
extension UITextField {
func setPadding(left: CGFloat,right: CGFloat){
let paddingView = UIView(frame: CGRect(x: 0,y: 0,width: left,height: self.frame.size.height))
self.leftView = paddingView
self.leftViewMode = .always
let paddingViewRight = UIView(frame: CGRect(x: 0,width: right,height: self.frame.size.height))
self.rightView = paddingViewRight
self.rightViewMode = .always
}
}
之后,将此行添加到myTextField函数:
textfield.setPadding(left: 20,right: 20)
,
我在应用程序中遇到了类似的问题,根据Apple文档,您可以尝试为所有屏幕添加相同的“样式”样式,将下一行添加到应用程序的Info.plist文件中
z <- c(-1,-1.4,-1.1,-1.8,-2.2,-2.5,-1.7,-1,-0.5,-0.1,0.2,0.4)
q <- NULL
for (i in 1:length(z)) {
if (z[i] <= -1.8) {
temp <- 1
}else temp <- 0
q <- rbind(q,temp)
}
for (i in 2:length(q)) {
if (z[i] < 0 & q[i-1] == 1) {
q[i] <- 1
}
}
q
[,1]
temp 0
temp 0
temp 0
temp 1
temp 1
temp 1
temp 1
temp 1
temp 1
temp 1
temp 0
temp 0
将此键设置为“浅”会使系统忽略用户的喜好,并始终将浅色外观应用于您的应用。
重要
强烈建议支持黑暗模式。在改进应用程序的暗模式支持时,请使用UIUserInterfaceStyle键仅暂时退出。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。