您的位置:首页 > 其它

个人笔记(随时更新)

2017-11-09 12:44 225 查看
目前正在用swift 3.0写一个自己的视频类项目,快写完了,忽然想整理一下一些细节,个人感觉swift 还是不够完善,很多oc种的功能比如kvo,想要去用需要用@dynamic 去标记变量 ,同时自己学的不够好,还需要进一步去将更多swift 的语法用到自己的代码中,这样才能记得清楚,自己研究还不够深入,可能有些错误的地方,请指正:

开始

项目中,

-当跨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//按照字符串里的数字为依据,算出顺序。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: