как я могу переместить ярлык на весь вид - PullRequest
1 голос
/ 13 сентября 2011

Мой вид макета http://i.imgur.com/PkZ9P.png

    -(IBAction)tapview:(id)sender  
   {
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationDuration:1];
    CGRect frame = labelgreen.frame;
    frame.origin.y -= 200;
    labelgreen.frame = frame;
    [UIView setAnimationDidStopSelector:@selector(forview1)];  
    [UIView commitAnimations]; }

но когда метка перемещается, она перемещается только внутри view1 или view2 или view 3, я бы хотел, чтобы он переместился по всему виду на цветной

что мне делать?

и после завершения анимации должна запускаться функция -(void)forview1

но функция не вызывается

-(void)forview1

{colorview.backgroundcolor=changecolor;}

спасибо

Ответы [ 4 ]

0 голосов
/ 13 сентября 2011

Представления с метками вложены в View1 / View2 / View3 и, таким образом, обрезаются до границ тех, которые содержат представления.Чтобы заставить их перемещаться по внешнему виду, вам нужно либо запустить их в главном представлении, либо перед запуском анимации удалить их из содержащих представлений и добавить их во внешний вид.Вы также можете посмотреть, можно ли использовать свойство clipToBounds, чтобы визуализировать представления меток при их перемещении за пределы их содержащего представления.

Пример удаления и повторного добавления в содержащем представлении (при условии, чтоПредставление labelgreen находится внутри представления, называемого view2) (сделайте это до запуска анимации).

CGRect newframe = labelgreen.frame
newframe.origin.y = newframe + view2.frame.origin.y;
newframe.origin.x = newframe + view2.frame.origin.x;

[labelgreen removeFromSuperview];
labelgreen.frame = newframe;

Затем либо:

[colorview addSubview:labelgreen];  // (assuming colorview is your main containing view).

Или:

[self.view addSubview:labelgreen];  // if self.view is the main containing view
0 голосов
/ 13 сентября 2011

Во-первых, попробуйте заменить

[UIView setAnimationDidStopSelector:@selector(foeview1)];  

на

[UIView setAnimationDidStopSelector:@selector(forview1)];

Во-вторых, нажмите метку в верхней части просмотра, используя следующий метод

- (void)bringSubviewToFront:(UIView *)view

Например,:

UILabel * labelgreen;
[labelgreen.superview bringSubviewToFront:labelgreen];

Если вы создаете это представление в IB, просто перетащите UILabel в конец его подпредставления.

0 голосов
/ 13 сентября 2011

Вы должны использовать блочную анимацию.Эти функции устарели.

[UIView animateWithDuration:animationDuration animations:^{

}];
0 голосов
/ 13 сентября 2011

орфографическая ошибка в функции ур

НЕ

[UIView setAnimationDidStopSelector:@selector(foeview1)];  

// правильно

[UIView setAnimationDidStopSelector:@selector(forview1)];  

больше

заменить эту строку

  labelgreen.frame.frame = frame;

Кому

  labelgreen.frame = frame;

объявить эту функцию в ur .h

- (void) forview1;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...