![](/img/trans.png)
[英]UIPageViewController - Double Tapping Dots Area Shows Partial Transition (Xcode 8, Swift 3)
[英]Tapping a view in xcode / swift 3 to 'select' it
我希望通過單擊來磨練用於“選擇” UIView的方法。 在我的用戶界面中,我有幾個希望被“選擇”的UIView。 選中后,我將具有執行基本調整的控件,例如alpha(讓用戶知道選擇了哪個視圖),以及一些更高級的功能,例如顯示一組獨特的菜單項。 一次只能選擇1個視圖。 這里沒有多點觸控。
問題是,我只用UICollectionViewCells看到了這一點。 我的界面沒有利用集合視圖,所以這是不可能的。
進入此過程的思考過程是1個點擊手勢以“選擇” UIview,然后通過在視圖邊界之外點擊來“取消選擇”它。
另一個思考過程是使用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。
現在,例如,您可以放置另一個帶有手勢識別器的UIView並使用Alpha:
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值將發生變化...
編輯:
在此代碼中,將“選擇” UIViews-字母將更改,並會在設置的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
})
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.