그래서 UILabel
이 그라데이션 이미지 (즉, UIImageView
) 위에 그려집니다. 그것은 다음과 같이 그렇다고 같습니다Swift에서 draw (_ rect : CGRect)에서 다른 혼합 모드로 UILabel을 그리는 방법
나는 그것이 softLight
혼합 모드와 배경 레이블하지만 혼합을 그립니다 있도록 UILabel
의 draw(_ rect: CGRect)
기능의 그래픽 문맥의 blendMode
을 변경하기 위해 노력하고있어 .
override func draw(_ rect: CGRect) {
// Drawing code
if let context = UIGraphicsGetCurrentContext() {
context.setBlendMode(.softLight)
self.textColor.set()
self.drawText(in: rect)
}
}
이 코드는 바로 위에 사진을 렌더링하지 :
내가 draw(_ rect: CGRect)
기능에이 코드입니다 : 여기
CGContext
과
draw
기능을 이해하지 못한다.
SO에 대한 대부분의 답변은 오래된 목표 -C 중 하나이며 더 이상 사용되지 않거나 손상되었거나 신속하고 복잡합니다 (예 : 금속 사용). 난 그냥 내가 가진 컨텍스트에서 텍스트를 그려 소프트 라이트에 컨텍스트의 블렌딩 모드를 설정하고 싶다. 쉬운 방법이 있어야합니다!
이 문제를 해결하는 방법에 대한 도움을 주시면 감사하겠습니다. 감사!
답변 해 주셔서 감사합니다. 당신은 이해하고 내가 원하는 것을 제게 줄 수있는 유일한 사람인 것 같습니다. 불행히도 내 레이블이 움직이기 때문에 모든 단계에서 "색상 혼합"을 업데이트하고 싶습니다. 그렇게 할 방법이 있습니까? – QuantumHoneybees
그건 그냥 애니메이션입니다. 텍스트의 위치를 나타내는 속성이 필요합니다. 해당 속성을 수정하려면'animate (withDuration : animations :)'를 사용하고 변경된 경우에는'setNeedsDisplay'를 호출하기 위해 해당 속성에 대한'didSet'을 추가하십시오. (원칙적으로 더 많은 접근 방식이 있지만 복잡하기 때문에 심각한 성능 문제가 발생하지 않는 한 걱정하지 않아도됩니다. Core Graphics 및 Core Animation은 이미 이러한 작업을 매우 쉽게 수행 할 수 있습니다. 경로 및 가장 단순한 시도로 시스템을 최적화하고 악화시킬 수 있습니다.) –
이 작업은 모두 'UIView'보다는 'CALayer'를 사용하여 수행 할 수 있지만 'CALayer'의 사용자 정의 속성을 애니메이션화하면 그것이 들리는 것보다 약간 까다 롭다.그것은 어렵지 않지만, 사람들이 필요로하지 않는 한 보통 사람들에게 추천하지는 않는다. –