我如何在所有视图上移动标签

时间:2011-09-13 12:41:56

标签: iphone objective-c ios4

我的视图布局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 :(得分:0)

在你的功能中拼写错误

不是

[UIView setAnimationDidStopSelector:@selector(foeview1)];  

//正确

[UIView setAnimationDidStopSelector:@selector(forview1)];  

更多

替换此行

  labelgreen.frame.frame = frame;

  labelgreen.frame = frame;

在你的.h

中声明这个功能

- (无效)forview1;

答案 1 :(得分:0)

首先,尝试替换

[UIView setAnimationDidStopSelector:@selector(foeview1)];  

[UIView setAnimationDidStopSelector:@selector(forview1)];

其次,使用以下方法在视图顶部推送标签

- (void)bringSubviewToFront:(UIView *)view

例如:

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

如果您要在IB中创建此视图,则只需将UILabel拖到其子视图的底部。

答案 2 :(得分:0)

您应该使用基于块的动画。这些功能已被弃用。

[UIView animateWithDuration:animationDuration animations:^{

}];

答案 3 :(得分:0)

标签视图嵌套在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