我在我看來,編程添加一個UISlider。此外,添加了sliderValueDidChange
的功能以觀察滑塊上的更改。UISlider沒有得到選擇如果Alpha是在viewDidLoad中置0,然後漸強
var durationSlider: UISlider!
override func viewDidLoad() {
super.viewDidLoad()
durationSlider = UISlider(frame:CGRectMake(0, 600, self.view.bounds.width, 20))
durationSlider.minimumValue = 0
durationSlider.maximumValue = 100
durationSlider.continuous = true
// durationSlider.alpha = 0
durationSlider.tintColor = UIColor.redColor()
durationSlider.value = 0
durationSlider.addTarget(self, action: "sliderValueDidChange:", forControlEvents: .ValueChanged)
self.view.addSubview(durationSlider)
}
func sliderValueDidChange(sender:UISlider!) {
print("value--\(sender.value)")
}
一切都像魅力直到這裏,我得到了正確的UISlider值的變化。
但是,只要我添加durationSlider.alpha = 0
,並使用我的viewDidLoad()
是這樣的:
viewDidLoad() {
...
let tapGestureRecognizer: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "handleTapGestureRecognizer:")
tapGestureRecognizer.numberOfTapsRequired = 1
self.player.view.addGestureRecognizer(tapGestureRecognizer)
}
func handleTapGestureRecognizer(gestureRecognizer: UIGestureRecognizer) {
UIView.animateWithDuration(1, delay: 1.5, options: [], animations: {
self.durationSlider.alpha = 1.0
}, completion: nil)
UIView.animateWithDuration(1.0, delay: 1.5, options: [], animations: {
self.durationSlider.alpha = 0
}, completion: nil)
}
在這一點上,我有2個問題。 1)UISlider瞬間消失(沒有任何持續時間或延遲,就好像我直接使用alpha = 1
- 沒有使用animateWithDuration),但它很好地淡出。
2)如果我在viewDidLoad中使用alpha = 0
,UISlider不會觸發sliderValueDidChange
。但是,如果我嘗試alpha = 1
,sliderValueDidChange
按預期工作。
更新的代碼:
這是行不通的。
func handleTapGestureRecognizer(gestureRecognizer: UIGestureRecognizer) {
UIView.animateWithDuration(0.2, delay: 0.4, options: [UIViewAnimationOptions.AllowUserInteraction], animations: {
self.durationSlider.alpha = 1.0
}, completion: {completed in
UIView.animateWithDuration(2.0, delay: 2.0, options: [], animations: {
self.durationSlider.alpha = 0
}, completion: nil)
})
}
然而,這個工程:
UIView.animateWithDuration(0.2, delay: 0.4, options: [UIViewAnimationOptions.AllowUserInteraction], animations: {
self.durationSlider.alpha = 1.0
}, completion: nil)
我想實現是視頻持續時間調節器與UISlider,所以我想,當用戶在屏幕上輕擊以使它顯示它可用於交互,並且如果用戶在x秒內未進行交互,請將其隱藏。
我嘗試了你的方法。現在動畫視覺看起來不錯,但是。但是,我仍然有第二個問題。當我最初在viewDidLoad中將alpha設置爲0時,我無法與滑塊交互。我也嘗試在'self.view.addSubview(durationSlider)'之前將alpha設置爲1,並在此之後將alpha設置爲1(在'self.view.addSubview(durationSlider)'之後)。在這兩種情況下,UISlider都是不可選擇/可交互的。 – senty
默認情況下,在嘗試使用帶有選項參數並添加UIViewAnimationOptionAllowUserInteraction的animateWithDuration表單時禁用用戶交互。 –
更新:我在選項中添加了[UIViewAnimationOption.AllowUserInteraction],但它仍然不讓我插入滑塊:/ – senty