카테고리 없음

swift 이미지에 그라데이션 적용해보기

kingarthur 2024. 9. 20. 15:39

이미지를 배경과 자연스럽게 연결해보고 싶어서 그라데이션을 만들어보았다~ 

 

여러번 도전끝에 자연스럽게 만들수있는... 그래서 남긴다,  또 쓰자 

 

    private func applyGradient() {
        let gradient = CAGradientLayer()
        
        // 그라데이션 색상 배열 설정
        gradient.colors = [
            UIColor.clear.cgColor,  // 상단에서 완전히 투명
            UIColor.white.withAlphaComponent(0.0).cgColor,  // 중간 투명도
            UIColor.white.withAlphaComponent(0.3).cgColor,  // 점점 더 진해짐
            UIColor.white.withAlphaComponent(0.7).cgColor,  // 거의 흰색
            UIColor.white.cgColor  // 하단에서 완전히 흰색 (배경과 연결)
        ]
        
        // 그라데이션의 위치를 부드럽게 분포시킴
        gradient.locations = [0.0, 0.2, 0.5, 0.8, 1.0]
        
        // 그라데이션 프레임을 이미지뷰에 맞춤
        gradient.frame = imageView.bounds
        
        // 그라데이션 시작점과 끝점 설정
        gradient.startPoint = CGPoint(x: 0.5, y: 0.0)  // 위에서 시작
        gradient.endPoint = CGPoint(x: 0.5, y: 1.0)    // 아래쪽에서 끝남
        
        // 이미지뷰에 그라데이션 추가
        imageView.layer.addSublayer(gradient)
    }

 요렇게하면 밑에 라인이 그나마 자연스럽게 된다 ~ 

 

 

    override func layoutSubviews() {
        super.layoutSubviews()
        // 레이아웃이 변경될 때마다 그라데이션의 크기도 이미지 뷰에 맞게 조정
        imageView.layer.sublayers?.forEach { layer in
            if let gradientLayer = layer as? CAGradientLayer {
                gradientLayer.frame = imageView.bounds
            }
        }
    }

 레이아웃이 바뀔수 있으니 유동적으로 적용이 될 수 있도록 만들자자잦 

 

다음에도 잘 쓰자 아자자