Цитата из ссылки на свойство фрейма UIView:
Если также установлено свойство transform, используйте вместо этого свойства bounds и center;в противном случае анимация изменений свойства фрейма не будет правильно отражать фактическое расположение представления.
Поэтому, если вы примените какое-либо пользовательское преобразование к своему виду, вы не сможете использовать свойство кадра представления.Чтобы переместить представление, измените его свойство center
, поэтому ваш код должен быть преобразован в (не уверен, что код правильный):
- (void) touchesMoved:(NSSet*)touches withEvent:(UIEvent*)event
{
// Move relative to the original touch point
CGPoint pt = [[touches anyObject] locationInView:self];
CGPoint newCenter;
newCenter.x += pt.x - startLocation.x;
newCenter.y += pt.y - startLocation.y;
[self setCenter: newCenter];
}
Если вы хотите просто расположить центр вида в касанииВы можете использовать следующий код:
UITouch *touch = [touches anyObject];
CGPoint touchPoint = [touch locationInView: [self superview]];
self.center = touchPoint;