タグ付けされた質問 「calayer」

CALayerは、QuartzCoreフレームワークのCoreAnimationクラスです。レイヤーのジオメトリと表示をカプセル化します。レイヤーのジオメトリとそのコンテンツのアニメーションをサポートします。

4
iPhone / iPad / iO向けの高速で無駄のないPDFビューア-ヒントとヒント?
最近、PDFの描画について多くの質問があります。 はい、PDFをで簡単にレンダリングできますUIWebViewが、これは優れたPDFビューアに期待するパフォーマンスと機能を提供できません。 PDFページをCALayerまたはUIImageに描画できます。Appleには、ズーム可能なUIScrollviewで大きなPDF を描画する方法を示すサンプルコードさえあります しかし、同じ問題が増え続けています。 UIImageメソッド: PDF UIImageは、レイヤーアプローチと同様に光学的にスケーリングされません。 制限UIImagesからの生成でCPUとメモリがヒットしPDFcontext、新しいズームレベルのリアルタイムレンダリングを作成するためにそれを使用できなくなります。 CATiledLayerメソッド: PDFページ全体をaに描画すると、かなりのオーバーヘッド(時間)CALayerが発生します。個々のタイルがレンダリングで表示されます(tileSizeを微調整しても) CALayers 事前に準備できません(画面外でレンダリングされます)。 一般に、PDFビューアもメモリをかなり消費します。Appleのズーム可能なPDFの例のメモリ使用量も監視します。 現在のプロジェクトでは、PDFビューアを開発UIImageしていて、別のスレッドでページのをレンダリングしています(ここでも問題です)、スケールがx1のときにページを表示しています。CATiledLayerスケールが1を超えると、レンダリングが開始されます。iBooksも同様のダブルテイクアプローチを採用しており、ページをスクロールすると、鮮明なバージョンが表示される前に1秒未満でページの低解像度バージョンを表示できます。 ページの各側にフォーカスがある2ページをレンダリングして、PDFイメージが描画を開始する前にレイヤーをマスクできるようにします。フォーカスされたページから+2ページ離れると、ページは再び破棄されます。 描画PDFのパフォーマンス/メモリ処理を改善するためにどれほど小さくても明白でも、誰かが洞察を持っていますか?またはここで議論された他の問題? 編集:いくつかのヒント(Credit- Luke Mcneice、VdesmedT、Matt Gallagher、Johann): 可能な場合は、メディアをディスクに保存します。 TiledLayersでレンダリングする場合は、より大きなtileSizeを使用します INIT頻繁プレースホルダオブジェクトと配列を用い、alternitively別の設計アプローチは、これ 画像は、 CGPDFPageRef NSOperationsまたはGCD&ブロックを使用して、事前にページを準備します。 CGContextSetInterpolationQuality(ctx, kCGInterpolationHigh); CGContextSetRenderingIntent(ctx, kCGRenderingIntentDefault);前CGContextDrawPDFPageに呼び出して、描画中のメモリ使用量を減らします docRefで初期化するのNSOperationsは悪い考え(メモリ)であり、docRefをシングルトンにラップします。 不要なNSOperations場合はキャンセルできます。特にメモリを使用する場合は、コンテキストを開いたままにしてください。 ページオブジェクトをリサイクルし、未使用のビューを破棄する 開いているコンテキストが必要なくなったらすぐに閉じます メモリ警告を受け取ったら、DocRefとページキャッシュを解放して再ロードします その他のPDF機能: PDF内のリンクの取得(およびこことここ) リンク配置のためのPDF Rectについて PDF annotdatestringsの変換 リンクのターゲットを取得する(/Dest配列からページ番号を取得する) 目次を取得する ドキュメントのタイトルとキーワード 生のテキストの取得(およびこことこことここ(配置に焦点を当てた)) 検索(およびここ)(すべてのPDFで機能するわけではありません(変な文字が表示されるだけです。エンコードの問題だと思いますが、よくわかりません)-Credit BrainFeeder) CALayerおよびオフスクリーンレンダリング -次のページをレンダリングして高速/スムーズな表示 …
369 ios  pdf  calayer 

4
パースペクティブ変換をUIViewに適用するにはどうすればよいですか?
UIViewでパースペクティブ変換を実行したい(カバーフローで見られるような) これが可能かどうか誰かが知っていますか? 私はCALayerすべての実用的なプログラマーであるCore Animationポッドキャストを使用して調査しましたが、iPhoneでこの種の変換を作成する方法についてはまだ明確ではありません。 ヘルプ、ポインタ、またはサンプルのコードスニペットをいただければ幸いです。

11
自動レイアウトを使用しているときに、CALayerのアンカーポイントを調整するにはどうすればよいですか?
注:この質問が行われて以来、状況は変化しています。最近の概要については、こちらをご覧ください。 自動レイアウトの前に、フレームを保存し、アンカーポイントを設定し、フレームを復元することで、ビューを移動せずにビューのレイヤーのアンカーポイントを変更できます。 自動レイアウトの世界では、もはやフレームを設定しませんが、制約は、ビューの位置を調整して目的の場所に戻すというタスクには及ばないようです。制約をハックしてビューの位置を変更できますが、回転やその他のサイズ変更イベントでは、これらは再び無効になります。 次の優れたアイデアは、「レイアウト属性の無効なペア(左と幅)」を作成するため機能しません。 layerView.layer.anchorPoint = CGPointMake(1.0, 0.5); // Some other size-related constraints here which all work fine... [self.view addConstraint: [NSLayoutConstraint constraintWithItem:layerView attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:layerView attribute:NSLayoutAttributeWidth multiplier:0.5 constant:20.0]]; ここでの私の意図はlayerView、アンカーポイントが調整されたビューの左端を、幅の半分+ 20(スーパービューの左端から差し込みたい距離)に設定することでした。 自動レイアウトでレイアウトされたビューで、ビューの位置を変更せずにアンカーポイントを変更することはできますか?ハードコードされた値を使用し、回転ごとに制約を編集する必要がありますか?私は望んでいない。 ビューに変換を適用したときに正しい視覚効果が得られるように、アンカーポイントを変更する必要があります。
161 ios  calayer  autolayout 

15
アニメーションの完了後、CABasicAnimationが初期値にリセットされます
アニメーションが完了した後、CALayerを回転させて、最終位置で停止しようとしています。 ただし、アニメーションが完了すると、初期位置にリセットされます。 (xcodeドキュメントは、アニメーションがプロパティの値を更新しないことを明示的に言っています。) これを達成する方法の提案。

15
-[CALayer setNeedsDisplayInRect:]で暗黙的なアニメーションを無効にする
-drawInContext:メソッドにいくつかの複雑な描画コードを含むレイヤーがあります。必要な描画の量を最小限に抑えようとしているので、変更された部分だけを更新するために-setNeedsDisplayInRect:を使用しています。これは見事に機能しています。ただし、グラフィックスシステムがレイヤーを更新すると、クロスフェードを使用して古い画像から新しい画像に移行します。瞬時に切り替えたいのですが。 CATransactionを使用してアクションをオフにし、期間をゼロに設定してみましたが、どちらも機能しません。これが私が使っているコードです: [CATransaction begin]; [CATransaction setDisableActions: YES]; [self setNeedsDisplayInRect: rect]; [CATransaction commit]; 代わりに使用する必要があるCATransactionに別のメソッドがありますか(kCATransactionDisableActionsで-setValue:forKey:も試しましたが、同じ結果です)。

14
CALayersを使用した丸みを帯びたUIView-一部のコーナーのみ-どのように?
私のアプリケーションでは、次の名前の4つのボタンがあります。 左上 左下 右上 右下 ボタンの上に画像ビュー(またはUIView)があります。 ここで、ユーザーが左上のボタンをタップするとします。上記の画像/ビューは、その特定のコーナーで丸められる必要があります。 丸みを帯びた角をUIViewに適用するのが困難です。 現在、私は次のコードを使用して、各ビューに丸い角を適用しています。 // imgVUserImg is a image view on IB. imgVUserImg.image=[UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"any Url Here"]; CALayer *l = [imgVUserImg layer]; [l setMasksToBounds:YES]; [l setCornerRadius:5.0]; [l setBorderWidth:2.0]; [l setBorderColor:[[UIColor darkGrayColor] CGColor]]; 上記のコードは、提供されたビューの各コーナーに丸みを適用しています。代わりに、選択したコーナーに丸みを付けたかっただけです-上/上+左/下+右など。 出来ますか?どうやって?

1
ここで「インスタンスメッセージのレシーバータイプ 'CALayer'は転送宣言です」とはどういう意味ですか?
コードのブロックをiOS4プロジェクトからiOS5に移植していますが、ARCで問題が発生しています。このコードは、画面キャプチャーからPDFを生成します。 PDF生成コード UIView *captureView; ... NSMutableData *pdfData = [NSMutableData data]; UIGraphicsBeginPDFContextToData(pdfData, captureView.bounds, nil); UIGraphicsBeginPDFPage(); CGContextRef pdfContext = UIGraphicsGetCurrentContext(); [captureView.layer renderInContext:pdfContext]; UIGraphicsEndPDFContext(); renderInContext行 [captureView.layer renderInContext:pdfContext]; 次のエラーを生成します。 Automatic Reference Counting issue Receiver type 'CALayer' for instance message is a forward declaration ここで何が起こっているのでしょうか?

5
透明な穴が開いたCALayer
単純なビュー(写真の左側)があり、このビューに何らかのオーバーレイ(写真の右側)を作成する必要があります。このオーバーレイにはある程度の不透明度があるはずなので、下のビューはまだ部分的に表示されています。最も重要なのは、このオーバーレイの中央に円形の穴があり、ビューの中心をオーバーレイしないようにすることです(下の図を参照)。 私はこのような円を簡単に作成できます: int radius = 20; //whatever CAShapeLayer *circle = [CAShapeLayer layer]; circle.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0,radius,radius) cornerRadius:radius].CGPath; circle.position = CGPointMake(CGRectGetMidX(view.frame)-radius, CGRectGetMidY(view.frame)-radius); circle.fillColor = [UIColor clearColor].CGColor; そして、このような「完全な」長方形のオーバーレイ: CAShapeLayer *shadow = [CAShapeLayer layer]; shadow.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, view.bounds.size.width, view.bounds.size.height) cornerRadius:0].CGPath; shadow.position = CGPointMake(0, 0); shadow.fillColor = [UIColor grayColor].CGColor; shadow.lineWidth = …


8
CALayersは、UIViewの境界変更でサイズ変更されませんでした。どうして?
私はその層に追加されたUIView約8つの異なるCALayerサブレイヤーを持っています。場合、私はビューの境界を変更する(アニメーション)、その後、ビュー自体は(私がそれをチェックする縮小backgroundColor)が、サブレイヤ大きさは変わりません。 これを解決するには?

7
CATextLayerのテキストを明確にする方法
をCALayer追加CATextLayerして作成しましたが、テキストがぼやけて表示されます。ドキュメントでは、「サブピクセルアンチエイリアス」について話していますが、それは私にはあまり意味がありません。誰もCATextLayerが明確なテキストで作るコードスニペットを持っていますか? Appleのドキュメントのテキストは次のとおりです。 注:CATextLayerは、テキストのレンダリング時にサブピクセルアンチエイリアスを無効にします。テキストは、それがラスタライズされると同時に既存の不透明な背景に合成される場合にのみ、サブピクセルアンチエイリアスを使用して描画できます。テキストピクセルを織り込む背景ピクセルを用意する前に、サブピクセルアンチエイリアスが適用されたテキストを画像またはレイヤーに個別に描画する方法はありません。レイヤーの不透明度プロパティをYESに設定しても、レンダリングモードは変更されません。 2番目の文はcomposites、existing opaque background at the same time that it's rasterized. それを「素晴らしい」テキストにすると見栄えの良いテキストが得られることを意味しますが、どのように合成し、どのように不透明な背景にして、どのようにラスタライズしますか? 彼らがキオスクメニューの例で使用するコードは次のとおりです(iOSではなくOS Xですが、動作すると思います!) NSInteger i; for (i=0;i<[names count];i++) { CATextLayer *menuItemLayer=[CATextLayer layer]; menuItemLayer.string=[self.names objectAtIndex:i]; menuItemLayer.font=@"Lucida-Grande"; menuItemLayer.fontSize=fontSize; menuItemLayer.foregroundColor=whiteColor; [menuItemLayer addConstraint:[CAConstraint constraintWithAttribute:kCAConstraintMaxY relativeTo:@"superlayer" attribute:kCAConstraintMaxY offset:-(i*height+spacing+initialOffset)]]; [menuItemLayer addConstraint:[CAConstraint constraintWithAttribute:kCAConstraintMidX relativeTo:@"superlayer" attribute:kCAConstraintMidX]]; [self.menuLayer addSublayer:menuItemLayer]; } // end of for loop ありがとう! …

17
UIViewレイヤーの内側の影の効果?
次のCALayerがあります。 CAGradientLayer *gradient = [CAGradientLayer layer]; gradient.frame = CGRectMake(8, 57, 296, 30); gradient.cornerRadius = 3.0f; gradient.colors = [NSArray arrayWithObjects:(id)[RGB(130, 0, 140) CGColor], (id)[RGB(108, 0, 120) CGColor], nil]; [self.layer insertSublayer:gradient atIndex:0]; 内側にシャドウエフェクトを追加したいのですが、その方法がよくわかりません。drawRectで描画する必要があると思いますが、これは他のUIViewオブジェクトの上にレイヤーを追加します。これは、一部のボタンの後ろのバーになるはずなので、何をすべきか途方に暮れているのでしょうか。 別のレイヤーを追加することもできますが、内側のシャドウ効果を実現する方法がわかりません(このように: 感謝してください...

7
iOSの白から透明なグラデーションレイヤーは灰色です
アプリの下部にポップアップ表示されるこの小さな詳細ビューの下部にCAGradientLayerを挿入しています。ご覧のとおり、色を白からクリアに設定しましたが、この奇妙な灰色の色合いが現れています。何か案は? // Set up detail view frame and gradient [self.detailView setFrame:CGRectMake(0, 568, 320, 55)]; CAGradientLayer *layer = [CAGradientLayer layer]; layer.frame = self.detailView.bounds; layer.colors = [NSArray arrayWithObjects:(id)[UIColor whiteColor].CGColor, (id)[UIColor clearColor].CGColor, nil]; layer.startPoint = CGPointMake(1.0f, 0.7f); layer.endPoint = CGPointMake(1.0f, 0.0f); [self.detailView.layer insertSublayer:layer atIndex:0]; 問題のあるビューは次のとおりです。

6
masksToBounds = YESがCALayerシャドウを防ぐのはなぜですか?
次のスニペットを使用して、UIViewの1つにドロップシャドウ効果を追加しています。これはかなりうまく機能します。しかし、ビューのmasksToBoundsプロパティをYESに設定するとすぐに。ドロップシャドウ効果は表示されなくなりました。 self.myView.layer.shadowColor = [[UIColor blackColor] CGColor]; self.myView.layer.shadowOpacity = 1.0; self.myView.layer.shadowRadius = 10.0; self.myView.layer.shadowOffset = CGSizeMake(0.0f, 0.0f); self.myView.layer.cornerRadius = 5.0; self.myView.layer.masksToBounds = YES; // <-- This is causing the Drop shadow to not be rendered UIBezierPath *path = [UIBezierPath bezierPathWithCurvedShadowForRect:self.myView.bounds]; self.myView.layer.shadowPath = path.CGPath; self.myView.layer.shouldRasterize = YES; これについて何かアイデアはありますか?

5
CALayerを即座に(アニメーションなしで)どのように移動しますか
ドラッグしようとしています CALayeriOSアプリで。 位置プロパティを変更するとすぐに、新しい位置にアニメーション化しようとし、あちこちでちらつきます。 layer.position = CGPointMake(x, y) どうすればCALayersすぐに移動できますか?Core AnimationAPIに頭を悩ませているようには見えません。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.