swift--02

作者: 竹尖 | 来源:发表于2017-08-26 22:29 被阅读0次

    -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   

    相关文章

      网友评论

          本文标题:swift--02

          本文链接:https://www.haomeiwen.com/subject/vzmvdxtx.html