gpt4 book ai didi

ios - 快速生成带有参数倾斜值数据的 UIColor

转载 作者:行者123 更新时间:2023-11-28 05:28:43 24 4
gpt4 key购买 nike

我正在尝试制作一个应用程序,它会根据设备的倾斜角度更改背景颜色。我很容易找到设备的倾斜值,我似乎无法将倾斜值用作 UIColor 中的参数。

我有以下代码:

let manager = CMMotionManager()

override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.

manager.gyroUpdateInterval = 0.1
manager.startGyroUpdates()

if manager.deviceMotionAvailable {
manager.deviceMotionUpdateInterval = 0.01
manager.startDeviceMotionUpdatesToQueue(NSOperationQueue.mainQueue()) {
[weak self] (data: CMDeviceMotion!, error: NSError!) in

let xColor = data.gravity.x


self!.view.backgroundColor = UIColor(red: 155/255, green: xColor, blue: 219/255, alpha: 1)
}
}

}

您可能会认为它会生成一种颜色,该颜色会根据设备的 x 倾斜度而变化,但事实并非如此。不支持该类型。

有人知道如何使用“xColor”变量来更改背景颜色的绿色级别吗?

最佳答案

问题是 data.gravity.x 返回一个 Double 而 UIColor 期望 CGFloat 值介于 0.0 和 1.0 之间。您需要将 Double 转换为 CGFloat,并使用 abs() 方法从负数中提取正数。

import UIKit
import CoreMotion
class ViewController: UIViewController {
let motionManager = CMMotionManager()
override func viewDidLoad() {
super.viewDidLoad()
motionManager.gyroUpdateInterval = 0.1
motionManager.startGyroUpdates()
if motionManager.deviceMotionAvailable {
motionManager.deviceMotionUpdateInterval = 0.01
motionManager.startDeviceMotionUpdatesToQueue(NSOperationQueue.mainQueue(), withHandler: { (data: CMDeviceMotion!, error: NSError!) -> Void in
let x = data.gravity.x
let y = data.gravity.y
let z = data.gravity.z
self.view.backgroundColor = UIColor(
red: CGFloat(abs(x)),
green: CGFloat(abs(y)),
blue: CGFloat(abs(z)),
alpha: 1.0)
})
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}

关于ios - 快速生成带有参数倾斜值数据的 UIColor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29873496/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com