Как сбросить опорную точку после масштабирования UIView (с UIImageView внутри)? - PullRequest
1 голос
/ 19 июня 2011

Я хочу сделать catransform3dmakerotation для некоторого UIView, который содержит UIImageView, чтобы он выглядел так, как будто они вращаются.Это работает, НО точка привязки неверна (больше не в центре графики) после того, как я масштабировал UIView (и, следовательно, растягивал изображение в нем).

Как сбросить опорную точку?Я имею в виду действительно сбросить его.Потому что я попробовал это:

[self.view viewWithTag:100].layer.anchorPoint = CGPointMake(0.5, 0.5);

И каждый раз, когда значение акселерометра изменяется, который обновляется почти каждые 0,1 секунды после изменения масштаба, изображение вращается, но больше не центрируется, кажется, оно вращаетсяего происхождение (0,0) вместо (0,5,0,5), хотя оно и должно обновляться в акселерометре : didAccelerate: метод.Но это не сработало.Вот код изменения масштаба:

UIView* buttView = (UIView*) [self.view viewWithTag:101];
UIImageView* butt = (UIImageView*)[self.view viewWithTag:100];
butt.frame= CGRectMake(butt.frame.origin.x, butt.frame.origin.x, newSize, newSize);
buttView.frame = butt.frame;

Спасибо!

1 Ответ

2 голосов
/ 19 июня 2011

Перед изменением anchorPoint необходимо запомнить старый кадр и после изменения сбросить его. Как это:

CGRect oldFrame = [[self.view viewWithTag:100] frame];
[self.view viewWithTag:100].layer.anchorPoint = CGPointMake(0.5, 0.5);
[[self.view viewWithTag:100] setFrame:oldFrame];
...