2013-01-09 2 views
5

CGAffinetransformを使用してカメラのズームを実装しようとしています。トランスフォームは問題ありませんが、サイズを大きくすると、AVCaptureVideoPreviewLayerに割り当てられたフレームから外れてしまいます。私はプロパティをYESに設定しようとしましたが、それは助けになりませんでした。CALayerのコンテンツが範囲外になる - iOS

フレームに含めることはできますか?

編集:
私が欲しいのは、私が、私はそれに変換をスケーリング適用される場合、(つまり、プレビュー層の枠が拡大します)、その一部をカメラのプレビュー層のための特定の領域を指定することができるということです指定された領域外のレイヤーがクリップされます。

答えて

25

スケーリングしているレイヤーを別のレイヤーの内側に置き、代わりにそのレイヤー(スーパーレイヤー)をマスクする必要があります。同じことがビューで機能します。

I.e. clippingViewscalingViewという2つのビュー/レイヤーがあります.scalingViewはclippingViewのサブビューで、clippingViewは実際にその境界にクリップするビューです。

[clippingView addSubview:scalingView]; 
clippingView.clipsToBounds = YES; 

または使用して層

[clippingLayer addSublayer:scalingLayer]; 
clippingLayer.masksToBounds = YES; 
+0

Iは、(なぜなら、いくつかの理由の 'UIImageView'、それは私が仮定は問題ないはず)、別のビューを追加しようとしたと私はself.view'のサブレイヤとして設定されたpreviewLayerとしてサブレイヤを追加.layer'。私は 'masksToBounds 'を' YES'と設定しましたが、まだ外に出ています – neeraj

+0

私の答えを明確にしました –

+0

私がやったことは、プレビューレイヤーを入れたいと思ったフレームで私が見たものです。プロパティ 'clipsToBounds'をYESにします。それがすべてだった。 Docプロパティは、このプロパティがYesに設定されている場合、ビューのすべてのコンテンツが指定されたフレームの内側にあることを示します。実際には、私は今までに財産を渡ったことはありません。 – neeraj

0

clipsToBounds私はYESに設定されているはず層を追加していするビューのプロパティ。

+0

特に受け入れられた回答を変更する理由は何ですか?あなたは基本的に私と同じことを言っています。 –

+0

1)あなたの答えはこれまでに受け入れられた答えではありませんでした。おそらく私はその時点でそれを理解していなかったからです。レイヤーとビューの間で混乱します。 2)昨日、私は自分の答えを見て、受け入れられた答えがないことを知ったので、私は自分自身を受け入れました... – neeraj

+0

しかし、今私はあなたが受け入れられたことを確認します。だから間違いが起きた。 – neeraj

2

あなたは皆私が見つけた部分的に正しいですが、私は明確にしたいと思いました。

は、我々はあなたが境界にマスクするために、その一次層を言っているまで何もしない[self.view.layer addSublayer:previewLayer]

1)[自己clipsToBounds]を経由してビューにAVCaptureVideoPreviewLayerのようなものを追加したとしましょう。 [self.view.layer masksToBounds];

2)あなたのビューにはフレームがあり、そのレイヤーも枠があるわけではありません。それは境界を持っていない場合は、マスクするものは何もありません。だからこれはself.view.layer.bounds = self.view.frame;

私は自分自身のUIViewクラスでこれをやったので、self.viewを呼び出す必要はありません。

previewLayer.bounds = self.frame; 
self.layer.bounds = self.frame; 

self.layer.masksToBounds = YES; 
previewLayer.masksToBounds = YES; 

[self setBounds:self.frame]; 
[self clipsToBounds]; 
+0

これはまさに私が探していたものです。私はカスタムUIViewを持っていて、私はAVFoundationを使ってカメラを見せたいです。ありがとう! –

関連する問題