gpt4 book ai didi

ios - 以编程方式创建的 uiview 在第一次单击时没有响应

转载 作者:行者123 更新时间:2023-11-28 06:37:26 24 4
gpt4 key购买 nike

大多数情况下,我在 AutoLayout 上创建了元素,但也有一些 uiview 是通过编程方式创建的。有一个事件必须改变一些逻辑和用户界面。一切正常,除了以编程方式创建的 uiview。他们只有在第二次点击后才会改变他们的状态。此外,如果我单击另一个以编程方式创建的 uiview,则之前的 uiview 将失去其当前状态并恢复为默认状态。可能线程有问题,我尝试了 dispatch_async 的一些组合,但没有帮助。

这是事件:

func actFilterComfort(sender: UIButton) {
let subview = self.labelSettingViewComfort.subviews[0] as UIView
let imageView = sender.superview?.viewWithTag(120) as! UIImageView

if(!filters.comfort) {
filters.comfort = true
filters.comfortImage.frame = CGRectMake(self.comfortDisplay.frame.origin.x + (CGFloat(filters.counter) * 10.0), 0.0, 20.0, 20.0)
self.comfortDisplay.hidden = true
subview.addSubview(filters.comfortImage)
subview.sendSubviewToBack(filters.comfortImage)

imageView.alpha = 1

filters.counter += 1
}
else {
filters.comfort = false

imageView.alpha = 0

filters.comfortImage.removeFromSuperview()
if(filters.counter == 1) {
self.comfortDisplay.hidden = false
}
else {
self.alignFiltersImages(subview, counter: filters.counter)
}
filters.counter -= 1
}
}

imageView 是以编程方式创建的 uiview。它应该改变它的阿尔法,但它没有。其他方面都很好。

最佳答案

您还需要更改图像 alpha。为 UIImage 创建一个扩展:

extension UIImage {
func setImageAlpha(alpha:CGFloat) -> UIImage {
UIGraphicsBeginImageContextWithOptions(self.size, false, 0.0)

let ctx = UIGraphicsGetCurrentContext();
let area = CGRect(x: 0, y: 0, width: self.size.width, height: self.size.height);

CGContextScaleCTM(ctx, 1, -1);
CGContextTranslateCTM(ctx, 0, -area.size.height);
CGContextSetBlendMode(ctx, .Multiply);
CGContextSetAlpha(ctx, alpha);
CGContextDrawImage(ctx, area, self.CGImage);

let newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

return newImage;
}
}

在设置 imageView alpha 后,使用以下代码更改 imageView 中的图像 alpha:

imageView.image = imageView.image?.setImageAlpha(1.0)

您还可以为 imageview 显示和隐藏设置隐藏属性,而不是设置 alpha。此时alpha为0时设置imageView.hidden = true,此时alpha为1时设置imageView.hidden = false

关于ios - 以编程方式创建的 uiview 在第一次单击时没有响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38812805/

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