2015-04-28 2 views
1

У меня есть вид, который перемещается вниз с очень медленной постоянной скоростью.Отображение доли пикселей в UIKit для плавного замедленного движения

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 кадра в секунду вместо ожидаемых 60. Это выглядит плохо, а не гладко.

Есть ли какие-либо возможности в UIKit, чтобы решить эту проблему?

+1

Почему вы используете CADisplayLink для простой анимации UIView? – matt

+0

Что вы ожидаете увидеть на экране, когда вы перемещаете только 0,01 пикселя? – rmaddy

+0

@matt это можно рассматривать как тестовый пример, на самом деле у меня есть анимация, которая не может быть выполнена с помощью стандартного механизма анимации UIView – user3537411

ответ

3

В общем, поскольку нет такой вещи, как подсветка частичного пикселя, простой ответ «если вам не нравится, как он выглядит, не делайте этого».

Однако может быть в состоянии получить пробег из allowsEdgeAntialiasing property of CALayer; Я понятия не имею, потому что я никогда не пробовал (это включает в себя переключение в ваш Info.plist, а также, я считаю, и это может привести к некоторой неэффективности работы, поэтому будьте осторожны).

Смежные вопросы