내가 도달하려는 목표로 디자인은 아래 이미지입니다. 다음 탐색 막대의 그라디언트가 아래의보기와 다릅니다. <a href="https://i.stack.imgur.com/kbHjk.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/kbHjk.png" alt="enter image description here"></a></p> <p>나는 그라데이션을 만들고 계층에서 함수 이미지의 도움으로 탐색 모음으로 설정 아래의 코드를 사용 :
:
//stackview
let gradientView = CAGradientLayer()
let cornerRadiusOfStackView : CGFloat! = 0
if #available(iOS 10.0, *) {
gradientView.colors = [Constants.Colors.violet.cgColor , Constants.Colors.green.cgColor ]
}
gradientView.startPoint = CGPoint(x: 0.0, y: 0.5)
gradientView.endPoint = CGPoint(x: 1.0, y: 0.5)
gradientView.frame = self.stackViewHoldingButtons.bounds
gradientView.cornerRadius = cornerRadiusOfStackView
self.stackViewHoldingButtons.layer.insertSublayer(gradientView, at: 0)
결과는 다음이 디자인은 :
func image(fromLayer layer: CALayer) -> UIImage {
UIGraphicsBeginImageContext(layer.frame.size)
layer.render(in: UIGraphicsGetCurrentContext()!)
let outputImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return outputImage!
}
//navbar
let gradient = CAGradientLayer()
let cornerRadiusOfNavBar : CGFloat! = 0
if #available(iOS 10.0, *) {
gradient.colors = [Constants.Colors.violet.cgColor , Constants.Colors.green.cgColor ]
}
gradient.startPoint = CGPoint(x: 0.0, y: 0.5)
gradient.endPoint = CGPoint(x: 1.0, y: 0.5)
gradient.frame = self.navigationController!.navigationBar.bounds
gradient.cornerRadius = cornerRadiusOfNavBar
navigationItem.title = NSLocalizedString("Register", comment: "")
self.navigationController!.navigationBar.setBackgroundImage(self.image(fromLayer: gradient), for: .default)
내가 탐색 메뉴 아래 스택보기가, 나 그것에 대한 기울기를 설정하는 코드를 사용 이 두 줄의 코드를 추가하여 탐색 바 아래쪽 테두리를 제거했습니다.
self.navigationController!.navigationBar.setBackgroundImage(UIImage(), for: .default)
self.navigationController?.navigationBar.shadowImage = UIImage()
다음과 같이
결과는 다음과 같습니다
어느 한 날 그라데이션이 균일하게하는 데 도움이 될 수 있습니다 ??
P. : - navigationBar.isTranslucent 속성이 false로 설정되어 있는지, 두 경우 모두 sRGB로 설정되어 있는지, 그래디언트를 설정하기 전과 후에 모두 테두리를 제거하는 선을 호출했는지 확인했습니다.
미리 감사드립니다.
가장 간단한 방법은 바로 뷰 요소 배경 지우기을 한 다음 모든 뒤에보기를 넣을 수 AppDelegate에이 값을 것입니다 설정하려면
그라데이션으로. –
덕분에 @AllenR, 이미 모든 장면에서이 방법을 구현했으며 시간을 변경해야하는 번거 로움이 있습니다. – MhmdRizk