个人笔记(随时更新)
2017-11-09 12:44
225 查看
目前正在用swift 3.0写一个自己的视频类项目,快写完了,忽然想整理一下一些细节,个人感觉swift 还是不够完善,很多oc种的功能比如kvo,想要去用需要用@dynamic 去标记变量 ,同时自己学的不够好,还需要进一步去将更多swift 的语法用到自己的代码中,这样才能记得清楚,自己研究还不够深入,可能有些错误的地方,请指正:
-当跨controller返回时,需要删除栈中的控制器
-动态操作UITableViewCell 时,需要对模型数组操作:
移动浮动图标,悬浮的图标有时候影响操作,需要挪开,但是又能隐藏
swift 中button 的setSelect没有了,可以用属性监测的willSet,didSet 去做
class MyButton : UIButton {
}
异常处理代码:
func uncaughtException() {
func readLog() {
字符串转data型
data转string型
开始
项目中,-当跨controller返回时,需要删除栈中的控制器
-动态操作UITableViewCell 时,需要对模型数组操作:
for (index,verify) in self.pendingArray.enumerated() { if verify == pending { self.pendingArray.remove(at: index) //找到了直接暂停遍历 break } }
移动浮动图标,悬浮的图标有时候影响操作,需要挪开,但是又能隐藏
private func panSomeWhere(_ gp: UIPanGestureRecognizer) { //拖动的位置跨度 let point = gp.translation(in: self.view) //将拖动的试图的中心按拖动的距离挪动 var destinationX = (gp.view?.center.x)! + point.x var destinationY = (gp.view?.center.y)! + point.y let viewH = (gp.view?.frame.size.height)! / 2 let viewW = (gp.view?.frame.size.width)! / 2 if destinationY - viewH < 0 { destinationY = viewH } //上边界 if destinationX - viewW < 0 { destinationX = viewW } //左边界 if destinationY + viewH > SCREEN_H {destinationY = SCREEN_H - viewH}//下边界 if destinationX + viewW > SCREEN_W {destinationX = SCREEN_W - viewW}//右边界 gp.view?.center = CGPoint.init(x: destinationX, y: destinationY) //将gp置0,防止拖动的view滑出出窗外 gp.setTranslation(CGPoint.zero, in: view) }
swift 中button 的setSelect没有了,可以用属性监测的willSet,didSet 去做
class MyButton : UIButton {
override var isSelected: Bool { willSet { print("changing from \(isSelected) to \(newValue)") } didSet { print("changed from \(oldValue) to \(isSelected)") } }
}
let button = MyButton() button.state == .normal button.isSelected = true // Both events fire on change. button.state == .selected button.isSelected = true // Both events still fire.
异常处理代码:
func uncaughtException() {
NSSetUncaughtExceptionHandler { (exception) in //异常处理信息 let array = exception.callStackSymbols let reson = exception.reason let name = exception.name let errorContent = "=======异常错误报告========\nname:\(name)\nreson:\(reson)\ncallStatackSymobols:\(array.joined(separator: "\n"))" try?errorContent.write(toFile: NSHomeDirectory()+"/Documents/error.log", atomically: true, encoding: String.Encoding.utf8) } }
func readLog() {
let dataPath = NSHomeDirectory()+"/Documents/error.log" let readHandle = try?FileHandle.init(forReadingFrom: URL.init(string: dataPath)!) let data = readHandle?.readDataToEndOfFile() if let fileData = data { let readString = String.init(data: fileData, encoding:String.Encoding.utf8) print("content====>\(readString!)") } }
字符串转data型
let data = str.data!(using: String.Encoding.utf8.rawValue)!
data转string型
let str = NSString(data:data! ,encoding: String.Encoding.utf8.rawValue)
NSCaseInsensitiveSearch = 1,//不区分大小写比较 NSLiteralSearch = 2,//区分大小写比较 NSBackwardsSearch = 4,//从字符串末尾开始搜索 NSAnchoredSearch = 8,//搜索限制范围的字符串 NSNumbericSearch = 64//按照字符串里的数字为依据,算出顺序。
相关文章推荐
- C#个人笔记(随时更新ing)
- 个人linux简单笔记,随时更新
- ASP.NET MVC 1.0 学习笔记(随时更新)
- 数据库(个人学习笔记,不断更新修改中)
- leetcode个人刷题笔记(持续更新)
- ASP.NET MVC 1.0 学习笔记(随时更新)
- Thinking‘ in java 个人笔记 第一章(持续更新ing)
- 个人iso笔记,持续更新
- 数据库与JDBC(个人学习笔记,不断更新修改中)
- ASP.NET MVC 1.0 学习笔记(随时更新)
- David的Debian笔记(随时更新)[转]
- 动态网页设计学习过程中个人觉得比较重要的问题(随时更新)
- Bash 编程和使用零散整理(个人所用非系统化笔记,更新时间2011.2.4)
- 【转帖】个人收藏的一些学习站点(随时更新)
- ASP.NET MVC 1.0 学习笔记(随时更新)
- 汤姆大叔博客笔记【随时更新】
- html+css+js(JQuery)使用笔记(随时更新)
- 一些开发中不常用但很实用的小技能,可能就一行代码,随时更新,个人备忘
- ASP.NET MVC 1.0 学习笔记(随时更新)
- python学习笔记--随时更新