[swift] 시간이 지날수록 배경색의 점차적인 변화(자체 전용 응용 프로그램 개발의 2)

5687 단어 SwiftiOS
매일 살짝 건드려서 새로운 기능을 설치하세요.

화면 이미지





출처


견본으로 삼다
여분의 논리가 너무 많기 때문에 중요한 부분만 있다.
ViewController.swift

    func timerFiring() {
        let timer = Timer(timeInterval: 0.2,
                          target: self,
                          selector: #selector(updateColor),
                          userInfo: nil,
                          repeats: true)
        RunLoop.main.add(timer, forMode: .default)
    }

    func updateColor() {

        //グラデーションの開始色(上下)
        //タイマー処理でRGB値を少しずつ変化させてセット
        let topColor = UIColor(red: tBgRed, green: tBgGreen, blue: tBgBlue, alpha: 1)
        let bottomColor = UIColor(red: bBgRed, green: bBgGreen, blue: bBgBlue, alpha: 1)

        //グラデーションの色を配列で管理
        let gradientColors: [CGColor] = [topColor.cgColor, bottomColor.cgColor]

        //グラデーションレイヤーを作成
        gradientLayer?.removeFromSuperlayer()
        gradientLayer = CAGradientLayer()
        //グラデーションの色をレイヤーに割り当てる
        gradientLayer!.colors = gradientColors
        //グラデーションレイヤーをスクリーンサイズにする
        gradientLayer!.frame = self.view.bounds      
        //グラデーションレイヤーをビューの一番下に配置
        self.view.layer.insertSublayer(gradientLayer!, at: 0)
    }

득점


요점으로 삼다gradientLayer?.removeFromSuperlayer()그렇지 않으면,timer에서 updateColor () 를 반복해서 호출해도 처음에 설정한 배색 방안에서 업데이트되지 않습니다.
참고로 배색에 관해서는 위아래의 RGB 값을 각각 무작위로 0~255 사이를 왕복하는 처리를 직접 썼다.
(현재는 난잡한 논리로 정리한 뒤 다른 기사로 투고하고 싶다)

감상


책상 위의 충전소에 서 있을 때 좌석 근처에 앉은 사람이 "어, 아까랑 색깔이 달라..."라고 말하는 눈빛을 포착하면 된다.

좋은 웹페이지 즐겨찾기