Я вращаю колесо, которое имеет различные подвид (UIImageViews и UIButtons) Однако, когда я прошу его отображать каждый центр каждого поднабора, он дает мне то же значение каждый раз.Координаты не будут меняться при повороте Цель c
-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
}
-(void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
NSSet *allTouches = [event allTouches];
int len = [allTouches count]-1;
UITouch *touch =[[allTouches allObjects] objectAtIndex:len];
CGPoint location = [touch locationInView:[self superview]];
float theAngle = atan2(location.y-self.center.y, location.x-self.center.x);
totalRadians = theAngle;
[self rotateImage:theAngle];
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
}
-(void) rotateImage:(float)angleRadians{
self.transform = CGAffineTransformMakeRotation(angleRadians);
CATransform3D rotatedTransform = self.layer.transform;
self.layer.transform = rotatedTransform;
int count = 0;
for (UIView *subview in self.subviews)
{
count++;
//these values are always the same
NSLog(@"%i %f %f", count, subview.center.x, subview.center.y);
}
}
Может кто-то пожалуйста, скажите мне, почему значения всегда приходит тот же, даже после того, как повернут и помещен в другую позицию?
Спасибо!
Настройка уровня преобразования к чисто-вращательное преобразование всегда вращается вокруг текущего центра слоя. Кажется, вы не применяете трансляционные преобразования. Какое поведение вы ожидали? – warrenm
Потому что я вращаю изображение, которое содержит различные компоненты. Эти компоненты должны менять координацию. Имею ли я смысл? – Lilz
Центр подвидности выражается относительно координатного пространства его супервизора. Поэтому, несмотря на то, что subviews перемещаются в пространстве экрана, они не перемещаются относительно своего родителя, если вы явно не применяете к ним поворот. Для большинства случаев использования субвизны имеют смысл сохранять свое относительное положение. – warrenm