問題タブ [cashapelayer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
2149 参照

macos - CATextLayer gets rasterized too early and it is blurred

I have some troubles with CATextLayer, that could be due to me, but I didn't find any help on this topic. I am on OS X (on iOS it should be the same).

I create a CATextLayer layers with scale factor > 1 and what I get is a blurred text. The layer is rasterized before applying the scale, I think. Is this the expected behavior? I hope it is not, because it just makes no sense... A CAShapeLayer is rasterized after that its transformation matrix is applied, why the CATextLayer should be different?

In case I am doing something wrong... what is it??

The solution I use at the moment is to set the contentsScale property of the layer to the scale factor. The problem is that this solution doesn't scale: if the scale factor of any of the parent layers changes, then contentsScale should be updated too. I should write code to traverse the layers tree to update the contentsScale properties of all CATextLayers... not exactly what I would like to do.

Another solution, that is not really a solution, is to convert the text to a shape and use a CAShapeLayer. But then I don't see the point of having CATextLayers.

A custom subclass of CALayer could help in solving this problem?

EDIT: Even CAGradientLayer is able to render its contents, like CAShapeLayer, after that its transformation matrix is applied. Can someone explain how it is possible?

EDIT 2: My guess is that paths and gradients are rendered as OpenGL display lists, so they are rasterized at the actual size on the screen by OpenGL itself. Texts are rasterized by Core Animation, so they are bitmaps for OpenGL.

I think that I will go with the contentsScale solution for the moment. Maybe, in the future, I will convert texts to shapes. In order to get best results with little work, this is the code I use now:

0 投票する
5 に答える
2919 参照

iphone - iOS の外部塗りつぶしの色

2 つの長方形 (2 つの閉じたサブcgpaths) があります。長方形 B は小さく、長方形 A 内に存在します。その中にあるすべてのエッジ。長方形Bの外側の色領域を直接塗りつぶす方法はありますか.

CAShapeLayer fillExternalColorそんな感じ?直接的な方法ではない場合、プログラムでこれを行う方法は?

A - 紫色 B ​​- 黄色

Aを描いてからBを描く Bを描いてからAを描く

ということで、Aを描いてからBを描いてみました。Bはクリアカラーにしたかったのですが(とりあえずイエローを入れました)、Aが紫色に見えてしまいました。

AnB を与える CGRectIntersection メソッドと AuB を与える CGRectUnion メソッドを見つけました。AuB - AnB である残りの領域を与える方法はありますか?

0 投票する
1 に答える
423 参照

iphone - CAShapeLayer 線画

(X,Y axis)を使用して、ある位置から別の位置まで 5 つのカスタム uiview (UITableView 行など) に線を引いていCAShapeLayerます。

CAShapeLayer私の問題は、 (私の場合は行) が現在どのビューにあるかを知りたいということですCGIntersect。などはCALayerありますCGRectか? チャート API の代わりにコア アニメーションを使用してグラフを作成しようとしています。

0 投票する
1 に答える
230 参照

ios - iPhoneでマスクされた画像の部分を取得する方法

画像をマスクするために CAShapeLayer を使用しましたが、マスクした部分だけを取得したいと考えています。取得すると、完全な画像しか取得できません。

Can anyone please provide me some code/information regarding this ?

CAShapeLayer *maskLayer = [CAShapeLayer layer];

Thanks in advance :)

0 投票する
1 に答える
221 参照

ios - 位置を設定した後に CAShapeLayer でタッチする

結合して CAShapeLayer に追加する一連の UIBezierPaths があります。ユーザーが触れた形状レイヤーの場所を検出する必要があります。ただし、シェイプレイヤーの位置を変更したため、シェイプレイヤーをタップすると、タップ座標とベジェパスの元の場所の座標を比較しているため、タップが検出されません。CAShapeLayer の現在の場所を簡単にタップできるかどうかは誰にもわかりませんか? タップ起点の基礎となるベジエ パスに依存する代わりに。