我有一个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];
}
答案 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的方式来实现相同的结果。
最好的问候。