Modus Operandi:
1)使用基本时钟图像的UIImageView。
2)添加MinuteHand& HourHand子图层(包含其各自的图像)到UIImageView图层。
问题:尝试执行旋转变换时,两个子图层消失。
注意:
1)我已删除了“小时”'代码和辅助弧度计算以简化代码。
2)'中心'是时钟的中心。我调整了坐标以实际将指针固定在时钟的中心。
3)ViewDidLayoutSubviews()似乎没问题。我得到了时钟+手。
class ClockViewController:UIViewController {
private let minuteLayer = CALayer()
@IBOutlet weak var clockBaseImageView: UIImageView!
@IBOutlet weak var datePicker: UIDatePicker!
override func viewDidLayoutSubviews() {
guard var minuteSize = UIImage(named: "MinuteHand")?.size,
var hourSize = UIImage(named: "HourHand")?.size
else {
return
}
var contentLayer:CALayer {
return self.view.layer
}
var center = clockBaseImageView.center
// Minute Hand:
minuteLayer.setValue("*** Minute Hand ***", forKey: "id")
minuteSize = CGSize(width: minuteSize.width/3, height: minuteSize.height/3)
minuteLayer.contents = UIImage(named: "MinuteHand")?.cgImage
center = CGPoint(x: 107.0, y: 40.0)
var handFrame = CGRect(origin: center, size: minuteSize)
minuteLayer.frame = handFrame
minuteLayer.contentsScale = clockBaseImageView.layer.contentsScale
minuteLayer.anchorPoint = center
clockBaseImageView.layer.addSublayer(minuteLayer)
}
这是我的问题:尝试通过0.01弧度旋转分针:
func set(_ time:Date) {
minuteLayer.setAffineTransform(CGAffineTransform(rotationAngle: .01)) // random value for test.
}
手横向向右移动vs旋转。
为什么?也许是由于支点?
答案 0 :(得分:0)
我认为这可以解决您的问题,看看并告诉我。
import GLKit // Importing GLKit Framework
func set(_ time:Date) {
minuteLayer.transform = CGAffineTransformMakeRotation(CGFloat(GLKMathDegreesToRadians(0.01)))
}
答案 1 :(得分:0)