Swift 在UIP检测识别器后显示标签
我试图在用户向下拖动图像后显示标签。问题是标签在之后不会显示。其他一切都很好,但只有标签不起作用。我花了几个小时试图找到一个解决方案,但我不知道我做错了什么 在UIPangestureRecognitor上调用的函数:Swift 在UIP检测识别器后显示标签,swift,uipangesturerecognizer,Swift,Uipangesturerecognizer,我试图在用户向下拖动图像后显示标签。问题是标签在之后不会显示。其他一切都很好,但只有标签不起作用。我花了几个小时试图找到一个解决方案,但我不知道我做错了什么 在UIPangestureRecognitor上调用的函数: func pullDownView(gesture: UIPanGestureRecognizer) { if(gesture.state == .changed) { if(iconImage.center.y - (iconImage.frame.si
func pullDownView(gesture: UIPanGestureRecognizer) {
if(gesture.state == .changed) {
if(iconImage.center.y - (iconImage.frame.size.height / 2) < view.frame.size.height / 3) {
let translationY = gesture.translation(in: view).y
iconImage.center.y += translationY
gesture.setTranslation(CGPoint(x: 0, y: 0), in: view)
iconImage.updateConstraints()
}else{
iconImage.isUserInteractionEnabled = false
iconImage.center.y = (view.frame.size.height / 3) + (iconImage.frame.size.height / 2)
iconImage.updateConstraints()
}
}
if(gesture.state == .cancelled || gesture.state == .ended || gesture.state == .failed) {
if(iconImage.center.y - (iconImage.frame.size.height / 2) >= view.frame.size.height / 6) {
if(iconImage.center.y != (view.frame.size.height / 3) + (iconImage.frame.size.height / 2)) {
iconImage.isUserInteractionEnabled = false
iconImage.center.y = (view.frame.size.height / 3) + (iconImage.frame.size.height / 2)
iconImage.updateConstraints()
getAccounts()
}
}else{
iconImage.center.y = view.frame.size.height / 2
iconImage.updateConstraints()
}
}
}
func getAccounts() {
noAccountsLabel = UILabel(frame: CGRect(x: 0, y: 0, width: view.frame.size.width, height: 50))
noAccountsLabel.text = "No accounts found!"
noAccountsLabel.font = UIFont(name: "Verdana", size: 20)
noAccountsLabel.textAlignment = .center
noAccountsLabel.center = CGPoint(x: view.frame.size.width / 2, y: noAccountsLabel.frame.size.height * 2)
view.addSubview(noAccountsLabel)
}
func下拉视图(手势:UIPangestureRecognitor){
如果(手势状态==.changed){
if(iconImage.center.y-(iconImage.frame.size.height/2)=view.frame.size.height/6){
如果(iconImage.center.y!=(view.frame.size.height/3)+(iconImage.frame.size.height/2)){
iconImage.isUserInteractionEnabled=false
iconImage.center.y=(view.frame.size.height/3)+(iconImage.frame.size.height/2)
iconImage.updateConstraints()
getAccounts()
}
}否则{
iconImage.center.y=view.frame.size.height/2
iconImage.updateConstraints()
}
}
}
func getAccounts(){
noAccountsLabel=UILabel(帧:CGRect(x:0,y:0,宽度:view.frame.size.width,高度:50))
noAccountsLabel.text=“未找到任何帐户!”
noAccountsLabel.font=UIFont(名称:“Verdana”,大小:20)
noAccountsLabel.textAlignment=.center
noAccountsLabel.center=CGPoint(x:view.frame.size.width/2,y:noAccountsLabel.frame.size.height*2)
view.addSubview(无帐户标签)
}
谢谢你的帮助!
斯特夫
为我工作
PS:我可能在这里做了错误的逻辑,但是你可以使用guard
来清除一些if
语句:
guard gesture.state == .cancelled || gesture.state == .ended || gesture.state == .failed else { return }
guard (iconImage.center.y - (iconImage.frame.size.height / 2) >= view.frame.size.height / 6) else { return }
if(iconImage.center.y != (view.frame.size.height / 3) + (iconImage.frame.size.height / 2)) {
iconImage.isUserInteractionEnabled = false
iconImage.center.y = (view.frame.size.height / 3) + (iconImage.frame.size.height / 2)
iconImage.updateConstraints()
getAccounts()
}
好的,我只是想确保。。文本颜色与背景颜色不一样,是吗?并且您确定正在调用块,该块具有
getAccounts
?是的,我尝试打印一个字符串,它工作正常。文本颜色不一样,试图更改,但仍然无效。noAccountsLabel
在哪里创建?那是IBOutlet吗?只是检查一下明显的。。。(1) 你在使用自动布局吗?我只看到标签的帧坐标。(2) 说到这里,请尝试设置您声明的UILabel()的框架,而不是初始化另一个UILabel。我觉得这种语法不对。我已经找到了一种显示标签的解决方案,但现在图标图像跳回到了以前的位置,你知道我如何解决这个问题吗?非常愚蠢,但我忘记了我已经在用户默认设置中设置了“帐户”,这就是标签没有显示的原因。但是当标签显示时,图标图像会跳回原来的位置。尝试将getAccounts
放在图标图像代码上方的块中仍然不起作用,我认为这是图标图像的限制因素,可能吗?我没有太多的限制因素,但这似乎是问题所在,如果在屏幕上添加新内容时它会跳转。您可能需要在此处发布新问题:)
guard gesture.state == .cancelled || gesture.state == .ended || gesture.state == .failed else { return }
guard (iconImage.center.y - (iconImage.frame.size.height / 2) >= view.frame.size.height / 6) else { return }
if(iconImage.center.y != (view.frame.size.height / 3) + (iconImage.frame.size.height / 2)) {
iconImage.isUserInteractionEnabled = false
iconImage.center.y = (view.frame.size.height / 3) + (iconImage.frame.size.height / 2)
iconImage.updateConstraints()
getAccounts()
}