このSOの質問に示されているものと同様のアプローチを使用して描画ツールをセットアップしました...タッチを追跡し、 UIBezierPathオブジェクトを作成し、パスを配列に追加し、それらをビューに描画するUIViewのサブクラスがありますdrawRect. ビューは透明 ([UIColor clearColor]、不透明 = NO) であり、PDF および Word 形式でドキュメントを表示する UIWebView の上に配置されます。
このツールを使用してテキストを強調表示したいので、0.5 アルファの黄色のストローク カラーを使用しています。これはかなりうまく機能しますが、テキストが重なっている部分では色が薄れて見えます。私はkCGBlendModeMultiplyブレンド モードの説明を読んでいて、それが完璧だと考えていました。これにより、テキストがハイライト カラーを「パンチスルー」してコントラストを向上させることができるはずです。
ただし、kCGBlendModeNormal、kCGBlendModeMultiply、または私が試したランダムブレンドモードの間に違いは見られません。これらは本当に機能しますか、それとも特定の状況でのみ機能しますか?
これが私の drawRect コードです:
- (void)drawRect:(CGRect)rect {
for (UIBezierPath *path in self.paths) {
[[UIColor colorWithRed:1 green:1 blue:0 alpha:0.5] setStroke]; // yellow
//[path stroke]; // uses default blend mode
[path strokeWithBlendMode:kCGBlendModeMultiply alpha:1.0]; // looks the same as above
}
}
色のアルファを 1.0 にして、 strokeWithBlendMode メソッドのアルファ引数を 0.5 に設定してみましたが、違いはありません。何か不足していますか?