У меня есть UIView в виде прокрутки, который содержит около 100 подпредставлений. Все подпредставления выглядят одинаково и являются экземплярами одного и того же класса. У меня есть преобразование, которое я хочу применить к каждому подпредставлению. Но преобразование должно меняться каждый раз, когда изменяется zoomScale.
Какой лучший способ применить преобразование ко всем представлениям? В настоящее время я реализую layoutSubviews, получая массив подпредставлений и устанавливая преобразование каждого подпредставления в новое преобразование.
Есть ли оптимальный способ сделать это?
Обновление:
Виды, которые я хочу преобразовать, - это булавки на карте. Когда я увеличиваю с помощью scrollView, их нужно уменьшить (т. Е. Они выглядят одинаково для пользователя) и остаются заблокированными в той же позиции).
- (void)layoutSubviews
{
CGAffineTransform transform = CGAffineTransformMakeScale(1.0/self.zoomValue, 1.0/self.zoomValue);
for(UIView *view in self.subviews){
view.transform = transform;
}
}
...
- (void)scrollViewDidZoom:(UIScrollView *)scrollView
{
self.mapMarkerContainer.zoomValue = scrollView.zoomScale;
[self.mapMarkerContainer setNeedsLayout];
}