#06viewDidLoad 客製 App 畫面

Kai
彼得潘的 Swift iOS / Flutter App 開發教室
5 min readMay 13, 2022

先製作漸層背景

//設定背景顏色func colorBackground(){//建立顯示漸層顏色的CAGradientLayer物件let gradientLayer = CAGradientLayer()//將漸層layer的邊界跟手機view的邊對齊gradientLayer.frame = view.frame//設定漸層的顏色gradientLayer.colors = [CGColor(red: 25/255, green: 25/255, blue: 1, alpha: 1),CGColor(red: 125/255, green: 125/255, blue: 1, alpha: 1),CGColor(red: 250/255, green: 250/255, blue: 1, alpha: 1)]//將漸層layer加在view上view.layer.addSublayer(gradientLayer)

製作一個柯南圖片的func,把它加到背景上

func addImage(moveX:CGFloat,moveY:CGFloat,rotateDegree:CGFloat,scale:CGFloat,alpha:CGFloat){let koImage = UIImage(named: "kon")let koImageView = UIImageView(image: koImage)let oneDegree = CGFloat.pi/180koImageView.transform = CGAffineTransform.identity.translatedBy(x: moveX, y: moveY).scaledBy(x:scale, y: scale).rotated(by: oneDegree*rotateDegree)koImageView.alpha = alphaview.addSubview(koImageView)

因為要製作很多個,所以再新增一個func

func totaladd(){addImage(moveX: 100, moveY: 500, rotateDegree: 45, scale: 0.3,alpha: 0.8)addImage(moveX: -90, moveY: 570, rotateDegree: 320, scale: 0.5,alpha: 0.7)addImage(moveX: 120, moveY: 600, rotateDegree: 330, scale: 0.3,alpha: 0.6)addImage(moveX: 0, moveY: 430, rotateDegree: 20, scale: 0.7,alpha: 0.6)addImage(moveX: -80, moveY: 300, rotateDegree: 12, scale: 0.4,alpha: 0.7)}

SpriteKit Particle File 製造下雪的粒子效果

func snowBlcak(){//產生SKView物件,利用insertSubview將它加到畫面的底層,成為背景let skView = SKView(frame: view.frame)view.insertSubview(skView, at: 0)skView.allowsTransparency = true//允許透明//顯示的內容由SKScene控制,因此產生SKScene,從skView呼叫presentScene顯示SKScene的內容let scene = SKScene(size: skView.frame.size)skView.presentScene(scene)//產生SKEmitterNode時傳入MySnowParticle的檔名,產生製造下雪效果的SKEmitterNode,然從再從scene呼叫addChild加入SKEmitterNode,讓scene顯示下雪的粒子效果let emitterNode = SKEmitterNode(fileNamed: "MySnowParticle")scene.addChild(emitterNode!)//SKScene的anchorPoint控制 scene內容呈現的位置,它的型別是 CGPoint,畫面的左下角為 (0, 0),右上角為 (1, 1)scene.anchorPoint=CGPoint(x: 0.5, y: 1)emitterNode?.particleBirthRate = 3//指定一秒發射幾張圖片emitterNode?.particleLifetime = 4 //停留的時間為幾秒emitterNode?.particleSpeed = 100 //移動速度//讓圖不要被擋住清除view&scene原始設定的背景色scene.backgroundColor = UIColor.clearview.backgroundColor = UIColor.clearview.addSubview(skView)}

最後把製作好的func放在viewDidLoad()裡面

override func viewDidLoad() {super.viewDidLoad()colorBackground()snowBlcak()totaladd()view.addSubview(logoImage)}

--

--