gpt4 book ai didi

swift - tvOS:UIButton 的 UIMotionEffect 滑动时不会反弹

转载 作者:行者123 更新时间:2023-11-30 13:44:30 25 4
gpt4 key购买 nike

我正在开发一个注册页面,其中有一个按钮可聚焦,并且我对其应用了 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)后立即弹回。有没有办法旋转按钮而不反弹或减少我的手指在电视 Remote 上移动的每个点的旋转角度量。

最佳答案

我最终通过将 UIImageView 添加到 UIButtonUIImageView.adjustsImageWhenAncestorFocused = true

需要提及的一件事是,当只有一个 UI 元素可聚焦时,您最好不要使用:

weak override var preferredFocusedView: UIView? 

这给了我一种奇怪的反弹效果,因为我只有一个可聚焦的 UI 元素,所以焦点无法移动。它总是调用 preferredFocusedView 并强制焦点回到 UIButton

的中心

关于swift - tvOS:UIButton 的 UIMotionEffect 滑动时不会反弹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35135048/

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