gpt4 book ai didi

ios - 在 xcode/swift 3 中点击一个 View 到 'select' 它

转载 作者:行者123 更新时间:2023-11-28 09:36:29 28 4
gpt4 key购买 nike

我希望磨练用于通过单击“选择”UIView 的方法。在我的 UI 中,我有几个 UIView,我希望它们是“可选择的”。选择后,我将使用控件来执行基本调整,例如 alpha(让用户知道选择了哪个 View ),以及稍微更高级的功能,例如显示一组独特的菜单项。一次只能选择 1 个 View 。这里没有多点触控。

问题是,我只见过用 UICollectionViewCells 完成的。我的界面没有使用 Collection View ,所以这是不可能的。

进入此的思考过程是 1 个轻击手势来“选择”uiview,然后通过在 View 边界之外轻击来“取消选择”它。

另一个思考过程是使用 UIButtons 而不是 UIViews 来利用 Selected 状态。

哪种解决方案更可行?这甚至可以仅使用 UIViews 吗?或者我应该回溯并转而使用 UIButtons 吗?

谢谢。

最佳答案

您需要向所需的 UIView 添加手势识别器

class ViewController: UIViewController, UIGestureRecognizerDelegate {
@IBOutlet weak var myView: UIView!

override func viewDidLoad() {
super.viewDidLoad()

let tap = UITapGestureRecognizer(target: self, action: #selector(self.tap(_:)))
tap.delegate = self
myView.addGestureRecognizer(tap)

}

}

然后你需要添加代码来处理你的 UIView 发生的任何事情到手势识别器函数中:

func tap(_ gestureRecognizer: UITapGestureRecognizer) {
myView.alpha = 0.5
}

一旦 UIView 被选中,这会将 UIView 的 alpha 属性更改为 0.5。 enter image description here enter image description here

例如,现在您可以放置​​第二个带有手势识别器的 UIView 并使用 alphas:

class ViewController: UIViewController, UIGestureRecognizerDelegate {
@IBOutlet weak var myView: UIView!
@IBOutlet weak var secondView: UIView!

override func viewDidLoad() {
super.viewDidLoad()

let tap = UITapGestureRecognizer(target: self, action: #selector(self.tap(_:)))
tap.delegate = self
myView.addGestureRecognizer(tap)

let tap2 = UITapGestureRecognizer(target: self, action: #selector(self.tap2(_:)))
tap.delegate = self
secondView.addGestureRecognizer(tap2)

}

func tap(_ gestureRecognizer: UITapGestureRecognizer) {
myView.alpha = 0.5
secondView.alpha = 1
}

func tap2(_ gestureRecognizer: UITapGestureRecognizer) {
myView.alpha = 1
secondView.alpha = 0.5
}

}

这样,根据您点击的 UIView,alpha 会发生变化...

enter image description here enter image description here

编辑:

在此代码中,UIView 将被“选中”- alpha 将发生变化,并将在 0.8 秒的设定时间内变回。

class ViewController: UIViewController, UIGestureRecognizerDelegate {
@IBOutlet weak var myView: UIView!
@IBOutlet weak var secondView: UIView!

override func viewDidLoad() {
super.viewDidLoad()

let tap = UITapGestureRecognizer(target: self, action: #selector(self.tap(_:)))
tap.delegate = self
myView.addGestureRecognizer(tap)

let tap2 = UITapGestureRecognizer(target: self, action: #selector(self.tap2(_:)))
tap.delegate = self
secondView.addGestureRecognizer(tap2)

}

func tap(_ gestureRecognizer: UITapGestureRecognizer) {
myView.alpha = 0.5
UIView.animate(withDuration: 0.8, animations: {
self.myView.alpha = 1
})
}

func tap2(_ gestureRecognizer: UITapGestureRecognizer) {
secondView.alpha = 0.5
UIView.animate(withDuration: 0.8, animations: {
self.secondView.alpha = 1
})
}

}

关于ios - 在 xcode/swift 3 中点击一个 View 到 'select' 它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40005658/

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