Размещение UIImageView на экране, проблема с преобразованием координат UIView - PullRequest
1 голос
/ 02 апреля 2012

У меня проблемы с получением преобразования координат из локального фрейма в окно справа.У меня есть изображение «Стрелка», которое нужно перемещать относительно кнопки UIB на странице при нажатии и при загрузке страницы.

Изображение стрелки (интенсивное имя "interfaceApertureSelectionArrow") инициализируется в методе didLoadView

- (void)viewDidLoad
{ 
...
//only initial values here, the image i will be moved using the moveImageView:to: function 
CGRect apertureSelectorArrowFrame = CGRectMake(300.0f, 125.0f, 30.0f, 30.0f);    
[self addImageView:interfaceApertureSelectionLineArrow withFrame:apertureSelectorArrowFrame];    
interfaceApertureSelectionLineArrow = [[UIImageView alloc] initWithFrame:apertureSelectorArrowFrame];
[interfaceApertureSelectionLineArrow setImage:[UIImage imageNamed:@"InterfaceSelectionLineArrow@2x"]];
interfaceApertureSelectionLineArrow.opaque = YES;
[self.view addSubview:interfaceApertureSelectionLineArrow];  
...
}  

Для реакции на нажатие кнопки я реализовал действие кнопки, выполнив преобразование координат с помощьюметод " convertPoint ".В этом случае конвертация и размещение стрелок работают правильно (!)

-(IBAction)setAttributeAperture:(id)sender{
UIButton *button = (UIButton *)sender;  
CGPoint superPoint = [button.superview convertPoint:button.frame.origin toView:nil];
[self moveImageView:interfaceApertureSelectionLineArrow toCGPoint:CGPointMake(superPoint.x, superPoint.y)];
}

... пока все хорошо.Теперь вот проблема.Когда я пытаюсь расположить стрелку рядом с координатами «darkButton» в методе viewDidLoad, чтобы показать выбор не только при нажатии кнопки, но и при загрузке представления, первоначально позиционирование не работает!Вот что я попробовал.

Добавлено к методу viewDidLoad:

 ...   
 CGPoint superPoint = [darkButton.superview convertPoint:darkButton.frame.origin toView:nil];
    [self moveImageView:interfaceApertureSelectionLineArrow toCGPoint:CGPointMake(superPoint.x, superPoint.y)];        
 ...

Функция перемещения, которая анимирует движение UIImageView стрелки (в случае, если это также актуально)

-(void)moveImageView:(UIImageView*)thisImageView
       toCGPoint:(CGPoint)thisCGPoint{
[UIView beginAnimations:@"UIImage Move" context:NULL]; 
[UIView setAnimationDuration:1];
CGSize size = thisImageView.frame.size;
thisImageView.frame = CGRectMake(thisCGPoint.x, thisCGPoint.y, size.width, size.height);
[UIView commitAnimations];
}

Проверка значения CGPoint до и после преобразования координат CGPoint в DarkButton показывает, что это не меняется. Как получилось? (как это работало в методе кнопки "setAttributeAperture")

...