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

    -1 self用法 self: 1> 闭包中 2> 在函数中和局部变量有歧义 3> 在懒加载中 00属性的创建 v...

网友评论

      本文标题:swift--02

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