动画同级视图

时间:2011-10-03 23:38:24

标签: iphone objective-c ios ipad

我有一个UIViews网格,每个都有一个附加的触摸事件。当UIView被触摸时,我想淡化它的所有兄弟姐妹。

有没有人有任何指示可以给予这个?可以通过被触摸的UIView处理褪色的兄弟姐妹,还是视图控制器会让兄弟姐妹褪色?

编辑:想出来:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

    for (UIView *subview in [self.superview subviews]) {
        if ( subview != self ) {
            subview.layer.opacity = 0.5;
        }      
    }

    [super bringSubviewToFront:self];

}

1 个答案:

答案 0 :(得分:1)

您也可以在UIView级别执行此操作。只需将更改包装到UIView动画块内的视图的alpha中。像这样:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
  [UIView beginAnimations:nil context:NULL];  
  [UIView setAnimationDuration:0.5];
  for (UIView *subview in [self.superview subviews]) {
    if ( subview != self ) {
      [subview setAlpha:0.5];
    }      
  }
  [UIView commitAnimations];    
  [super bringSubviewToFront:self];

}

这应该会使所有子视图在半秒内变为半透明度。你把它排序了,但我只是想我会用UIView的方式来实现相同的结果。

最好的问候。