在 UIKit 中显示像素分数以实现平滑的慢动作
Display fractions of pixels in UIKit for smooth slow motion
我有一个视图以非常缓慢的恒定速度向下移动。
var updater = CADisplayLink(target: self, selector: Selector("loop"))
func loop() {
view.center = CGPointMake(view.center.x, view.center.y + 0.01)
}
loop
每秒调用 60 次,并将视图向下移动 0.01 点。 0.50 点是视网膜上的像素。
据我所知,UIKit 只显示全像素。我有一个问题,因为视图只会在屏幕上移动,当它的 Y 坐标乘以 0.50 时。但它大约是 1.2 fps 而不是预期的 60。看起来很糟糕,不流畅。
UIKit 有没有可能解决这个问题?
一般来说,由于不存在照亮部分像素的情况,简单的答案是"if you don't like the way it looks, don't do that"。
但是,您可能能够从 CALayer 的 allowsEdgeAntialiasing
属性 中获得一些好处;我不知道,因为我从来没有尝试过(我相信它也涉及在你的 Info.plist 中设置一个开关,并且它可能会导致一些绘图效率低下,所以要小心)。
我有一个视图以非常缓慢的恒定速度向下移动。
var updater = CADisplayLink(target: self, selector: Selector("loop"))
func loop() {
view.center = CGPointMake(view.center.x, view.center.y + 0.01)
}
loop
每秒调用 60 次,并将视图向下移动 0.01 点。 0.50 点是视网膜上的像素。
据我所知,UIKit 只显示全像素。我有一个问题,因为视图只会在屏幕上移动,当它的 Y 坐标乘以 0.50 时。但它大约是 1.2 fps 而不是预期的 60。看起来很糟糕,不流畅。
UIKit 有没有可能解决这个问题?
一般来说,由于不存在照亮部分像素的情况,简单的答案是"if you don't like the way it looks, don't do that"。
但是,您可能能够从 CALayer 的 allowsEdgeAntialiasing
属性 中获得一些好处;我不知道,因为我从来没有尝试过(我相信它也涉及在你的 Info.plist 中设置一个开关,并且它可能会导致一些绘图效率低下,所以要小心)。