【原】关于swift3及iOS10发布后,定时动画无法执行问题

前言:好坑啊,前段时间把现有的APP的开发语言更新到swift3.0以后,APP各种问题不断,即使语法正确,也不一定能正常工作;昨天又发现一个动画移动问题,让我一时不知道从何下手,查了查资料没有与之相关的内容,排解了一段时间终于发现问题了。

问题代码:

self.timer = Timer.scheduledTimer(timeInterval: 0.08, target: self, selector: #selector(setNeedsDisplay(_:)), userInfo: nil, repeats: true)

此行代码的含义在此就不赘述了,如有不明白之处,请自行找度娘。

那么具体应该怎么修改呢,好,只需要改一个地方,将上述代码的“setNeedsDisplay(_:)”修改为“CALayer.setNeedsDisplay”即可,如下:

self.timer = Timer.scheduledTimer(timeInterval: 0.08, target: self, selector: #selector(CALayer.setNeedsDisplay), userInfo: nil, repeats: true)

恩,基本就这样。

PS:对了,记得重写draw方法哈,其次。。。最重要的一点!!这行代码坑死我了,竟然是这么玩的。

【原】ios开发之使用swift3.0画虚线

近期需要在界面中画虚线,想了想没有啥好的办法,于是百度求解,都是用OC写的,完全不考虑我们swift开发者的感受,于是根据OC转了下swift3.0,经测试没啥问题。

        let shapeLayer: CAShapeLayer = CAShapeLayer.init()

        shapeLayer.bounds = self.view.bounds

        shapeLayer.position = self.view.center

        shapeLayer.fillColor = UIColor.clear.cgColor

        shapeLayer.strokeColor = UIColor.init(hexString: “63747F”).cgColor

        shapeLayer.lineJoin = kCALineJoinRound

        shapeLayer.lineDashPattern = [NSNumber.init(value: 3 as Int32),NSNumber.init(value: 2 as Int32)]

        let path: CGMutablePath = CGMutablePath()

        path.move(to: CGPoint.init(x: self.accountTextField.frame.origin.x, y: self.accountTextField.frame.origin.y+self.accountTextField.frame.height))

        path.addLine(to: CGPoint.init(x: self.accountTextField.frame.origin.x+self.accountTextField.frame.width, y: self.accountTextField.frame.origin.y+self.accountTextField.frame.height))

        shapeLayer.path = path

        self.view.layer.addSublayer(shapeLayer)

附上原文参考链接:http://blog.csdn.net/u012976984/article/details/46785597

【原】TextField左边加入图标并设置缩进

最近在写一个登录界面,遇到一个问题,类似于如图设计:

QQ20160901-0@2x

左边图标都是无背景的png图,如果直接加上,以上内容“请”字会紧贴在图标后面,显得很紧凑。

而解决方案可以采用类似于如下的解决方案(swift语言):

[php]

 

self.passwordTextField = UITextField.init(frame: CGRectMake(shortSplitLineView.frame.origin.x, shortSplitLineView.frame.origin.y+16+1, shortSplitLineView.frame.width, 28))

//左边图标

let passwordTextFieldLeftImageView: UIImageView = UIImageView.init(image: UIImage.init(named: "userPassword.png"))

let passwordTextFieldLeftView: UIView = UIView.init(frame: CGRectMake(0, 0, 30, 28))

passwordTextFieldLeftView.addSubview(passwordTextFieldLeftImageView)

self.passwordTextField.leftView = passwordTextFieldLeftView

self.passwordTextField.leftViewMode = .Always

[/php]

基本原理是:创建一个view,在这个新建的view上添加ImageView,最后在加入到TextField的leftView方法中即可。这样就可以随意调整view的宽度来实现缩进,就不用重写方法等其他繁琐的操作了。