카테고리 없음
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
}
}
}
레이아웃이 바뀔수 있으니 유동적으로 적용이 될 수 있도록 만들자자잦
다음에도 잘 쓰자 아자자