Ios 在sceneKit视图中添加了按钮,但它有一个延迟
我在sceneKit视图中添加了一个自定义按钮。当触摸它时,它会播放动画,表明它已被单击。我面临的问题是用户触摸和动画开始之间的延迟。我的场景有28.1K三角形和84.4K顶点。这是太多了还是我需要以不同的方式实现按钮。场景以60fps的速度渲染。我通过sceneView.addSubview添加了该按钮:谢谢您的回答Ios 在sceneKit视图中添加了按钮,但它有一个延迟,ios,uibutton,scenekit,Ios,Uibutton,Scenekit,我在sceneKit视图中添加了一个自定义按钮。当触摸它时,它会播放动画,表明它已被单击。我面临的问题是用户触摸和动画开始之间的延迟。我的场景有28.1K三角形和84.4K顶点。这是太多了还是我需要以不同的方式实现按钮。场景以60fps的速度渲染。我通过sceneView.addSubview添加了该按钮:谢谢您的回答 viewDidLoad(){ // relevant code starButton = UIButton(type: UIButtonTyp
viewDidLoad(){
// relevant code
starButton = UIButton(type: UIButtonType.Custom)
starButton.frame = CGRectMake(100, 100, 50, 50)
starButton.setImage(UIImage(named: "yellowstar.png"), forState: UIControlState.Normal)
sceneView.addSubview(starButton)
starButton.addTarget(self, action: "starButtonClicked", forControlEvents: UIControlEvents.TouchUpInside)
starButton.adjustsImageWhenHighlighted = false
}
func starButtonClicked(){
animateScaleDown()
}
func animateScaleDown(){
UIView.animateWithDuration(0.1, animations: {
self.starButton.transform = CGAffineTransformMakeScale(0.8, 0.8)
}, completion: { _ in
self.wait()
})
}
func wait(){
UIView.animateWithDuration(0.2, animations: {}, completion: { _ in
UIView.animateWithDuration(0.2, animations: {
self.starButton.transform = CGAffineTransformMakeScale(1, 1)
})
})
}
好吧,我解决了。有问题的代码是
starButton.addTarget(self, action: "starButtonClicked", forControlEvents: UIControlEvents.TouchUpInside)
UIControlEvent.TouchUpInside给人滞后的错觉。将其更改为。触地更好。对于Swift 5
var starButton = UIButton()
func a () {
starButton = UIButton(type: UIButton.ButtonType.custom)
starButton.frame = CGRect(x: 100, y: 100, width: 50, height: 50)
starButton.backgroundColor = .blue
SpielFenster.addSubview(starButton)
starButton.addTarget(self, action: #selector(starButtonClicked), for: UIControl.Event.touchDown)
starButton.adjustsImageWhenHighlighted = false
}
@objc func starButtonClicked(){
animateScaleDown()
}
func animateScaleDown(){
UIView.animate(withDuration: 0.1, animations: {
self.starButton.transform = CGAffineTransform(scaleX: 0.8, y: 0.8)
}, completion: { _ in
self.wait()
})
}
func wait(){
UIView.animate(withDuration: 0.2, animations: {}, completion: { _ in
UIView.animate(withDuration: 0.2, animations: {
self.starButton.transform = CGAffineTransform(scaleX: 1, y: 1)
})
})
}
你能发布触摸和动画代码吗?我编辑了我的问题,延迟了多少时间?如果你非常敏感,你可能会在动画开始前看到SDK和iOS固有的2帧延迟。大约半秒。对于任何好的用户体验来说都是非常重要的。我想知道,我是否应该学习SprikeKit并使用Overlyskscene属性,然后向Overlysksene添加按钮?