gpt4 book ai didi

ios - 突出显示类似于 UIButton 的 UIView

转载 作者:行者123 更新时间:2023-12-03 18:22:44 24 4
gpt4 key购买 nike

我有一个带有多个 subview 的 UIView 和一个可识别的关联点击手势,我想模仿它具有“触摸”效果。也就是说,当点击发生时,我想显示容器 View 具有不同的背景颜色,并且任何 subview UILabels 的文本也看起来突出显示。

当我收到来自 UITapGestureRecognizer 的点击事件时,我可以很好地更改背景颜色,甚至将 UILabel 设置为 [label setHighlighted:YES];

由于各种原因,我无法将 UIView 更改为 UIControl。

但是如果我添加一些 UIViewAnimation 来恢复突出显示,则不会发生任何情况。有什么建议吗?

    - (void)handleTapGesture:(UITapGestureRecognizer *)tapGesture {
[label setHighlighted:YES]; // change the label highlight property

[UIView animateWithDuration:0.20
delay:0.0
options:UIViewAnimationOptionCurveEaseIn
animations:^{
[containerView setBackgroundColor:originalBgColor];
[label setHighlighted:NO]; // Problem: don't see the highlight reverted
} completion:^(BOOL finished) {
// nothing to handle here
}];
}

最佳答案

setHighlighted 不是可动画化的 View 属性。另外,您说的是两个相反的事情:您同时将突出显示设置为"is"和“否”。结果将是什么也没有发生,因为没有整体变化。

使用完成处理程序或延迟性能来更改突出显示稍后

编辑:

你说“两种都尝试了,但都不起作用。”也许您需要澄清我所说的延迟性能的含义。我刚刚尝试过,效果非常好:

- (void) tapped: (UIGestureRecognizer*) g {
label.highlighted = YES;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, 0.2 * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
label.highlighted = NO;
});
}

标签必须具有与其 highlightedTextColor 不同的 textColor ,以便发生可见的情况。

关于ios - 突出显示类似于 UIButton 的 UIView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8747009/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com