一、自定义Log
在Swift中,我们也需要如OC一样,对log进行自定义。下面是一个我自定义的log,示例如下:
func ABYPrint<N>(message: N, fileName: String = #file, methodName: String = #function, lineNumber: Int = #line){
#if DEBUGSWIFT
let file = (fileName as NSString).lastPathComponent.replacingOccurrences(of: ".Swift", with: "")
print("\(file):\(lineNumber)行,打印信息:\n\(message)");
#endif
}
swift自定义log的关键点在于,#if DEBUGSWIFT
这行代码上。
如何在Swift中添加一个宏定义呢?
TARGETS -> build Setting -> 搜索“flag”,在Activie Complilation Conditions中,Debug的选项卡里添加DEBUGSWIFT, 即可。
在xcoed 9, swift 4中,直接使用DEBUG也是可以的#if DEBUG
但我为了和oc区分开来,添加了个人的标记。
二、UITableView的一些注意事项
1、行高
行高这玩意,一言难尽。
一开始以为直接给cell一个frame即可。但发现不生效。用autolayout又发现这个自动布局是根据子视图的约束自动计算高度,按理来说,就可以了。
但偏偏页面比较简单,需要直接设置。
最后......
在代理方法中直接设置就好了......
2、footer上的button
用自动布局写了footer,上面有个button,点击事件不生效,但是,设置的footer的行高,就直接OK了......
三、 自动布局与ScrollView
func setScrollView() -> Void {
scrollView.backgroundColor = ABYGlobalBackGroundColor()
view.addSubview(scrollView)
scrollView.snp.makeConstraints { (make) in
make.top.left.right.bottom.equalToSuperview()
}
let containerView: UIView = UIView.init()
scrollView.addSubview(containerView)
containerView.snp.makeConstraints { (make) in
make.top.left.bottom.right.equalTo(scrollView).inset(UIEdgeInsets.zero)
make.width.equalToSuperview()
}
for index in 1...10 {
let lable = UILabel.init()
lable.textAlignment = .center
lable.text = "第\(index)个视图"
containerView.addSubview(lable)
lable.snp.makeConstraints({ (make) in
make.left.right.equalToSuperview()
make.height.equalTo(scrollView.snp.height)
if let last = lastView {
make.top.equalTo(last.snp.bottom)
} else {
make.top.equalTo(0)
}
})
lastView = lable
}
containerView.snp.makeConstraints { (make) in
if let last = lastView {
make.bottom.equalTo(last.snp.bottom)
}
}
}