我刚刚开始制作一个新应用。代码UIScreen.main.brightness = 1.0
在任何地方都无效。我在viewDidLoad
中尝试过,在viewWillAppear
中尝试过。我注释掉了其他所有内容,并使它成为唯一运行的代码行,但是它没有用。我无法更改亮度。我正在iPhone(iOS 13.4.1)的真实设备上尝试使用它。可能是什么原因?
编辑:还尝试了一个新的Xcode项目。仍然不起作用。
答案 0 :(得分:4)
我注意到在iOS 13中,从viewDidLoad和viewWillAppear调用UIScreen.main.brightness无效。将其添加到viewDidAppear可以正常工作。
按一下按钮也可以很好地工作。
import UIKit
class ViewController: UIViewController {
var brightness: CGFloat = 1.0
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
let button = UIButton(type: .infoDark)
// This call is ignored
UIScreen.main.brightness = CGFloat(0.3)
view.addSubview(button)
button.frame = CGRect(x: 40.0, y: 100.0, width: button.frame.width, height: button.frame.height)
button.addTarget(self, action: #selector(toggle), for: .touchUpInside)
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
// This call is also ignored
UIScreen.main.brightness = CGFloat(0.8)
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
// This call sets the brightness
UIScreen.main.brightness = 0.5
}
@objc func toggle() {
brightness = brightness - 0.2
print("brightness is \(brightness)")
if brightness < 0 { brightness = 1.0 }
// This call changes the brightness
UIScreen.main.brightness = brightness
}
}
答案 1 :(得分:0)
我发现了一些有趣的东西! 如果您通过代码设置亮度-但随后用户从系统UI手动更改了亮度,则您将不再能够通过代码更改亮度(直到应用重新启动)-Apple可能有某种逻辑来防止过于频繁/不必要的更改。< / p>
这只是我的观察-文档中没有此类信息