UIScrollView ContentOffset не достигает края экрана
У меня проблема с UIScrollView
, не уверен, что это ошибка или нет, но это происходит, когда я реализую UIScrollView
с этими delegate
и масштабируемое / панорамируемое изображение.
Прежде всего, когда я перемещаю изображение, возможно, что contentOffset
может быть не целочисленным значением (.5). Для определенных zoomScales
, когда я перемещаю изображение до самого края, из-за этого оно падает на полпикселя от достижения края.
Это очень маленькая вещь, но в моем приложении я должен перетаскивать объекты по экрану, и если я перетаскиваю объект в угол, вы можете заметить это.
Я реализовал следующее, чтобы попытаться исправить проблему и сделать так, чтобы contentOffset
должно быть целое значение:
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset
{
if (targetContentOffset->x != ceilf(targetContentOffset->x))
{
if (velocity.x > 0)
{
targetContentOffset->x = ceilf(targetContentOffset->x);
}
else
{
targetContentOffset->x = floorf(targetContentOffset->x);
}
}
if (targetContentOffset->y != ceilf(targetContentOffset->y))
{
if (velocity.y > 0)
{
targetContentOffset->y = ceilf(targetContentOffset->y);
}
else
{
targetContentOffset->y = floorf(targetContentOffset->y);
}
}
}
Тем не менее, это не работает, как мой targetContentOffset
полностью отличается от contentOffset
имущество.
Кто-нибудь а) почему возникает эта ошибка или б) как ее исправить, используя метод делегата выше или каким-либо другим способом?
1 ответ
В качестве альтернативы реализация этого метода также может работать на вас.
-(void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView
Глядя на ваши комментарии ниже, вам, возможно, придется реализовать несколько методов. Тот, что выше или тот, который указан в другом ответном посте, когда он замедляется до остановки, просто для того, чтобы убедиться, что вы касаетесь своего граничного условия и метода, который вы уже должны обработать для точек скорости.