-1 self用法
self:
1> 闭包中
2> 在函数中和局部变量有歧义
3> 在懒加载中
00属性的创建
var childVc : [UIViewController] //如果没有初始化就在viewload中进行赋值操作
var parentVc : UIViewController //如果没有初始化就在viewload中进行赋值操作
var delegate : HYContentViewDelegate?
var startOffset : CGFloat = 0
var isForbidDelegate : Bool = false
01 as用法
as--当自己知道容器中的类的类型但编译器不知道就用这转化
guard let targetLable = ges.view as? UILabel else {
return
}
02 参数中参数带下划线 不带下划线的区别
参数带下划线 不带下划线的区别 有下划线调用的时候 第一个不会显示类型--一般代理和点击方法中使用
03代理
代理的写法 代理默认是必须实现的 可选的话 optionsal @objc 方法和协议都要加
protocol 名称 : class {
func HYContentView(_ contentView : HYContentView, contenIndex : Int)
func contentView(_ contentView : HYContentView ,sourceIndex : Int ,targetIndex : Int , progress : CGFloat)
}
weak var delegate : HYContentViewDelegate?
04 懒加载
fileprivate lazy var collectionView : UICollectionView = {
一般都会设置一些属性
创建一个 返回 return
}()
fileprivate lazy var Attributes : [UICollectionViewLayoutAttributes] = [UICollectionViewLayoutAttributes]()
05
extension 使用
可以以在当前类中使用 也可扩充系统的类方法或对象方法
extension UIColor {
在extension中扩充构造函数, 只能扩充便利构造函数
1> 在init前需要加上关键字convenience
2> 在自定义的构造函数内部, 必须明确的通过self.init()调用其他的构造函
convenience init(r : CGFloat, g : CGFloat, b : CGFloat, alpha : CGFloat = 1.0) {
self.init(red: r / 255.0, green: g / 255.0, blue: b / 255.0, alpha: alpha)
}
// 计算属性: 只读属性----也就是类方法
class var randomColor : UIColor {
return UIColor(r: CGFloat(arc4random_uniform(256)), g : CGFloat(arc4random_uniform(256)), b : CGFloat(arc4random_uniform(256)))
}
6 string-->NSString
// 判断是否以#开头---如果string不好用就转成NSString再调用方法
if (hexString.hasPrefix("#")) {
// as 将String类型转成NSString---
hexString = (hexString as NSString).substring(from: 1)}
7元祖的使用
7.1元祖作为返回值
func getRGB() -> (CGFloat,CGFloat,CGFloat) {
var red :CGFloat = 0
var green : CGFloat = 0
var blue :CGFloat = 0
getRed(&red, green: &green, blue: &blue, alpha: nil)
return(red * 255,green*255,blue*255)
}
7.2元祖重命名
取值可以 .0 .1 .2 也可以.red .green .blue
typealias ColorRGB = (red : CGFloat, green : CGFloat, blue : CGFloat)
8.瀑布流原理
01.collectionView实现瀑布流
02.自定义layout布局 重写3个方法 (1.准备布局 2.返回布局 3.设置滚动区域)
03
fileprivate lazy var Attributes : [UICollectionViewLayoutAttributes] = [UICollectionViewLayoutAttributes]()
遍历cell个数的数组
每一个Attribute根据indexPath 对应一个cell 设置Attribute的尺寸--添加到数组中--返回就是每个cell的frame
9如果代码中有?
解决办法: 1. if 2.guard
网友评论