gpt4 book ai didi

ios - 在点击它之后但在使用 IOS 操作之前更改 UIview 颜色

转载 作者:行者123 更新时间:2023-11-29 00:04:42 25 4
gpt4 key购买 nike

实际上,我在 UIView 上放置了一个点击手势识别器以显示另一个屏幕,我希望它的颜色在下一个屏幕出现之前立即改变。

我正在创建点击手势,例如:

        tapGesture = new UITapGestureRecognizer(HighlightLine);
myview.UserInteractionEnabled = true;
myview.AddGestureRecognizer (tapGesture);

以及更改颜色和推送新的 UIViewController 的代码:

    private void HighlightLine()
{
var view = tapGesture.View;
var loc = tapGesture.LocationInView(view);
var subview = view.HitTest(loc, null);

while(subview.Superview != null && subview.Tag != 1000) //find the right view
subview = subview.Superview;

if (subview.Tag == 1000)
{
subview.BackgroundColor = new UIColor(0.9f, 0.91f, 0.95f, 1f);
var vc = this.Storyboard.InstantiateViewController("ScrollSaisie") as ScrollSaisie;
parent.NavigationController.PushViewController(vc, true);
}
}

一切都单独工作(如果我不推 viewController, View 颜色会改变,如果我推 viewController,它会显示)但是当第二个 viewController 显示时 View 暂停,在第二个 viewController 关闭之前颜色不会改变.我能够通过使用计时器解决问题,但我认为这不是一个很好的解决方案。

还有其他解决方案吗?

最佳答案

问题是对 UIView 的更改只有在应用它们的函数结束时才会应用。在这里,您在 View 发生更改之前推送一个新的 View Controller 它的颜色。获得所需效果的一种简单方法是使用带有完成 block 的动画。

swift :

UIView.animate(withDuration: 0.33, delay: 0, options: .curveLinear, animations: {
// Change view color
}, completion: { _ in
// Push new ViewController
})

Xamarin:

UIView.Animate(0.33, 0, UIViewAnimationOptions.CurveLinear,
() => {
subview.BackgroundColor=new UIColor(0.9f, 0.91f, 0.95f, 1f);
},
() => {
var vc = this.Storyboard.InstantiateViewController("ScrollSaisie") as ScrollSaisie;
parent.NavigationController.PushViewController(vc, true);
}
);

关于ios - 在点击它之后但在使用 IOS 操作之前更改 UIview 颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48445685/

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