陰影可以讓使用者介面變得更加美觀,更有質感,更有層次。因此學會使用陰影已經變成工程師必學的一項技術。
所有子類UIView,都可以看到layer裡面的屬性,我們可以在程式碼中直接套用陰影效果屬性。我們來看看可以設定參數:
接下來帶大家玩轉陰影
所謂的平民式陰影就是什麼屬性都不調,一昧地用預設。
vw.layer.shadowOpacity = 1
浮島式陰影是使視圖看起來接近甚至接觸曲面的一種,因此陰影直接存在於視圖下方,而不是圍繞視圖。
vw.layer.shadowPath = UIBezierPath(rect: vw.bounds).cgPath
vw.layer.shadowRadius = 5
vw.layer.shadowOffset = .zero
vw.layer.shadowOpacity = 1
let shadowSize: CGFloat = 20
let contactRect = CGRect(x: -shadowSize, y: vw.frame.height - (shadowSize * 0.4), width: vw.frame.width + shadowSize * 2, height: shadowSize)
vw.layer.shadowPath = UIBezierPath(ovalIn: contactRect).cgPath
vw.layer.shadowRadius = 5
vw.layer.shadowOpacity = 0.4
站立式陰影,可以讓視就像站立起來。看起來畫面更生動了。
沒有輪迴眼,也可以使用地爆天星陰影,讓視圖飛到天上去,留下美美的陰影。
let shadowSize: CGFloat = 10
let shadowDistance: CGFloat = 40
let contactRect = CGRect(x: shadowSize, y: vw.frame.height - (shadowSize * 0.4) + shadowDistance, width: vw.frame.width - shadowSize * 2, height: shadowSize)
vw.layer.shadowPath = UIBezierPath(ovalIn: contactRect).cgPath
vw.layer.shadowRadius = 5
vw.layer.shadowOpacity = 0.4
let shadowWidth: CGFloat = 1.2
let shadowHeight: CGFloat = 0.5
let shadowOffsetX: CGFloat = -50
let shadowRadius: CGFloat = 5
let shadowPath = UIBezierPath()
shadowPath.move(to: CGPoint(x: shadowRadius / 2, y: vw.frame.height - shadowRadius / 2))
shadowPath.addLine(to: CGPoint(x: vw.frame.width, y: vw.frame.height - shadowRadius / 2))
shadowPath.addLine(to: CGPoint(x: vw.frame.width * shadowWidth + shadowOffsetX, y: vw.frame.height + (vw.frame.height * shadowHeight)))
shadowPath.addLine(to: CGPoint(x: vw.frame.width * -(shadowWidth - 1) + shadowOffsetX, y: vw.frame.height + (vw.frame.height * shadowHeight)))
vw.layer.shadowPath = shadowPath.cgPath
vw.layer.shadowRadius = shadowRadius
vw.layer.shadowOffset = .zero
vw.layer.shadowOpacity = 0.2