UILabel
は、グラデーションイメージ(つまり、UIImageView
)の上に描画されています。これは、みかんのようになります。Swiftのdraw(_ rect:CGRect)で異なるブレンドモードのUILabelを描画する方法
私はそれがラベルを描くようにUILabel
さんdraw(_ rect: CGRect)
機能にグラフィックスコンテキストのblendMode
を変更しようとしているが、softLight
ブレンドモードと背景とブレンドしています。ここで
は、私はそれが見えるようにしたいものです。
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のほとんどの回答は、古い目的のいずれかであり、非推奨/壊れているか、迅速かつ複雑すぎます(たとえば、金属を使用)。私はちょうど私が持っているコンテキストでテキストを描画し、コンテキストのブレンドモードをソフトライトに設定したいと思います。簡単な方法があります!
これを修正する方法については、ご了承ください。ありがとう!
ありがとうございました!あなたは私が望んでいたものを理解し、私に与えることができた唯一の人のようです。残念ながら、私のラベルは動いているので、毎回のステップで「ブレンドカラー」を更新したいと思っています。そうする方法はありますか? – QuantumHoneybees
これは単なるアニメーションです。テキストの場所を示すプロパティが必要です。そのプロパティを変更するには 'animate(withDuration:animations:)'を使い、変更されたときに 'setNeedsDisplay'を呼び出すためにそのプロパティのための' didSet'を追加してください。コアグラフィックスとコアアニメーションは、簡単な操作でもこのようなものを最適化するのに非常に優れています。ルート、そしてシステムに挑戦して悪化させようとするなら、最も単純な試みは最適です)。 –
'CALayer'のカスタムプロパティをアニメーション化する代わりに、' UIView'ではなく 'CALayer'ですべてを行うことができます。それは聞こえるよりもややトリッキーです。それは難しいことではありませんが、それが必要な場合を除いて私は通常、人には勧めないほど微妙です。 –