2016-02-01 41 views
0

我正在註冊頁面,其中一個按鈕是可對焦的,我將UIMotionEffect應用於它。tvOS:UIButton的UIMotionEffect沒有反彈時刷卡

我的按鈕聲明:

private lazy var requestTokenButton: UIButton = { 
    let button = UIButton() 
    button.titleLabel?.font = UIFont(name: ThemeManager.sharedTheme.commonFontRegular, size: 22) 
    button.setTitle("Get a New Code", forState: .Normal) 
    button.setTitleColor(UIColor.blackColor(), forState: .Normal) 
    button.backgroundColor = ThemeManager.sharedTheme.yellowColor 
    button.addTarget(self, action: "requestNewToken", forControlEvents: .PrimaryActionTriggered) 
    return button 
}() 

我使用Cartography對程序自動佈局:

constrain(self.requestTokenButton, self.registrationMoreInfoLabel) { view1, view2 in 
    view1.leading == view2.leading 
    view1.top == view2.bottom + 30 
    view1.height == 65 
    view1.width == 400 
} 

這裏是我applyMotionEffect()

private func applyMotionEffect() { 
    let yRotationMotionEffect = UIInterpolatingMotionEffect(keyPath: "layer.transform", type: .TiltAlongHorizontalAxis) 
    let yMovementMotionEffect = UIInterpolatingMotionEffect(keyPath: "center.y", type: .TiltAlongVerticalAxis) 

    let m34 = CGFloat(-1.0/3000) 
    let angle = CGFloat(20 * M_PI/180.0) 

    var baseTransform = CATransform3DIdentity 
    baseTransform.m34 = m34 

    var rotateYmin = baseTransform 
    rotateYmin = CATransform3DRotate(rotateYmin, angle, 0.0, 1.0, 0.0); 

    var rotateYmax = baseTransform 
    rotateYmax = CATransform3DRotate(rotateYmax, -1 * angle, 0.0, 1.0, 0.0); 

    yRotationMotionEffect.minimumRelativeValue = NSValue(CATransform3D: rotateYmin) 
    yRotationMotionEffect.maximumRelativeValue = NSValue(CATransform3D: rotateYmax) 


    self.requestTokenButton.addMotionEffect(yRotationMotionEffect) 
    self.requestTokenButton.addMotionEffect(yMovementMotionEffect) 
} 

這裏是我的問題:當我從遠程滑動時,按鈕在旋轉後立即彈回到角度限制CGFloat(20 * M_PI/180.0)。有沒有一種方法可以在不反彈的情況下旋轉按鈕,或者減少我的手指在電視遙控器上移動的每個點的旋轉角度。

回答

0

我結束了加入做UIImageViewUIButtonUIImageView.adjustsImageWhenAncestorFocused = true

有一點需要提及的是,當只有一個UI元素可獲得焦點,你最好使用:

weak override var preferredFocusedView: UIView? 

這給了我奇怪的反彈效果,因爲我只有一個可聚焦的UI元素,所以焦點沒有辦法去。它總是呼叫preferredFocusedView並強制回到中心UIButton