UIView
創(chuàng)建View的步驟
- 創(chuàng)建視圖對(duì)象
- 設(shè)置frame及相關(guān)屬性
- 將創(chuàng)建的View添加到父視圖
常用View屬性
let view1 = UIView(frame: CGRect(x: 15, y: 85, width: 50, height: 50))//創(chuàng)建視圖對(duì)象纲菌,并設(shè)置frame
view1.isUserInteractionEnabled = false//是否打開(kāi)用戶(hù)交互
view1.tag = 10//設(shè)置tag值
view1.backgroundColor = UIColor.red//設(shè)置背景顏色
view1.alpha = 0.5//設(shè)置透明度
view1.isHidden = true//設(shè)置是否隱藏
view1.removeFromSuperview()//從其父視圖移除
更多View的屬性方法(簡(jiǎn)單列舉幾個(gè))
-
UIView繼承自UIResponder
響應(yīng)者相關(guān)方法 UIView的坐標(biāo)尺寸相關(guān)
- transform、transform3D View形變 transform用法
- hitTest point 方法 事件傳遞與響應(yīng)鏈機(jī)制
- convert方法 坐標(biāo)轉(zhuǎn)換
- sizeToFit 系統(tǒng)會(huì)根據(jù)內(nèi)容的自動(dòng)布局
- UIView子視圖相關(guān)
- superview、subviews 父視圖氓癌、子視圖
- addSubview滑凉、insertSubview统扳、exchangeSubview 添加/插入子視圖喘帚、交換子視圖層級(jí)
- removeFromSuperview、bringSubviewToFront咒钟、sendSubviewToBack移出吹由、移動(dòng)視圖層級(jí)
- layoutSubviews、layoutIfNeeded朱嘴、setNeedsLayout 布局相關(guān)
- UIView添加手勢(shì)
- addGestureRecognizer倾鲫、removeGestureRecognizer 添加/移除手勢(shì)
- UIView 動(dòng)畫(huà)(類(lèi)方法) UIView簡(jiǎn)單的動(dòng)畫(huà)實(shí)現(xiàn)
- animate
- transition
- animateKeyframes
- addKeyframe
6.UIView繪制
- draw
- clipsToBounds
- alpha isHidden 透明度 是否隱藏
- contentMode 填充模式
- tintColor、tintAdjustmentMode tintcolor相關(guān)
CALayer
Swift中UIView與CALayer層的關(guān)系和OC是一樣的萍嬉,關(guān)系與區(qū)別請(qǐng)看UI視圖相關(guān)中UIView以及CALayer的關(guān)系和區(qū)別
這里只簡(jiǎn)述CALayer層常用的屬性
- 邊框相關(guān)
- borderWidth
- borderColor
- 陰影相關(guān)
- shadowColor
- shadowOffset
- shadowOpacity
- shadowRadius
- 圓角相關(guān)
- masksToBounds
- cornerRadius
因?yàn)樯厦娴幕旧掀綍r(shí)用的都比較多乌昔,代碼就不給示例了
- 漸變相關(guān)
- 漸變需要用到CAGradientLayer
- 將創(chuàng)建的CAGradientLayer實(shí)例添加到view的layer層
let v = UIView(frame: CGRect(x: 100, y: 100, width: 200, height: 200))
v.backgroundColor = UIColor.black
view.addSubview(v)
let gradientLayer = CAGradientLayer()
gradientLayer.frame = v.bounds
let fromColor = UIColor.green.cgColor
let minColor = UIColor.red.cgColor
let toColor = UIColor.blue.cgColor
gradientLayer.colors = [fromColor,minColor,toColor]
gradientLayer.startPoint = CGPoint(x: 0, y: 0)
gradientLayer.endPoint = CGPoint(x: 1, y: 1)
gradientLayer.locations = [0,0.3,1]
v.layer.addSublayer(gradientLayer)
同樣我們也可以利用CAGradientLayer自定義漸變色:
extension UIColor{
class func gradientColorWithSize(_ size:CGSize, _ direction: GradientColorDirection, _ colors:[UIColor]) -> UIColor {
let gradientLayer = CAGradientLayer()
gradientLayer.frame = CGRect(x: 0, y: 0, width: size.width, height: size.height)
var startPoint = CGPoint.zero
if direction == GradientColorDirection.GradientColorDirectionUpwardDiagonalLine {
startPoint = CGPoint(x: 0.0, y: 1.0)//向上斜對(duì)角的起點(diǎn)與其他不同
}
gradientLayer.startPoint = startPoint
var endPoint = CGPoint.zero
switch direction {
case .GradientColorDirectionVertical:
endPoint = CGPoint(x: 0.0, y: 1.0)
case .GradientColorDirectionHorizontal:
endPoint = CGPoint(x: 1.0, y: 0.0)
case .GradientColorDirectionDownDiagonalLine:
endPoint = CGPoint(x: 1.0, y: 1.0)
case .GradientColorDirectionUpwardDiagonalLine:
endPoint = CGPoint(x: 1.0, y: 0.0)
}
gradientLayer.endPoint = endPoint
gradientLayer.colors = colors.map{ $0.cgColor }
UIGraphicsBeginImageContext(size)
gradientLayer.render(in: UIGraphicsGetCurrentContext()!)
let image = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext();
return UIColor.init(patternImage: image)
}
}
調(diào)用代碼:
let gradientView = UIView(frame: CGRect(x: 100, y: 320, width: 100, height: 100))
gradientView.backgroundColor = UIColor.gradientColorWithSize(CGSize(width: 100, height: 100), GradientColorDirection.GradientColorDirectionUpwardDiagonalLine, [UIColor.red,UIColor.green,UIColor.blue])
view.addSubview(gradientView)
展示效果:
代碼效果展示