質問

NSSlider を使用して IKImageView 内で画像のズーム率を設定するためのベスト プラクティスは何ですか?

スライダーを次のいずれかにバインドできました ズームイン または ズームアウトする IKImageView のアクション。明らかに、私が見たいと思うのは、これらのアクションの両方を制御する 1 つのスライダーです。スライダーを変更するたびに画像が更新されるのが最善です (マウス ボタンがまだ放されていない場合でも継続的に)。

役に立ちましたか?

解決

このデモでは多くのことが説明されています。 イメージキットデモ

特に、このスニペットは私が探していたものです。

- (IBAction) zoomSliderDidChange:(id)sender
{
    [addProductPhotoImageView setZoomFactor:[sender floatValue]];
}

他のヒント

バインディングの方法は、あなたのコントローラの同じプロパティにIKの画像ビューのズーム率とスライダーの値の両方に結合することであろう。スライダーは、プロパティの値を変更すると、画像ビューが通知されます、そして、あなたのコントローラから新しい値を取りに行くでしょう。

この方法の利点の一つは、あなたがしてズームアウトのより多くの方法を追加することができますし、スライダーの値が古く行かないだろうということです。一例として、ユーザーがそのようにズームすることができ、スライダーが自動的に更新されます、IKImageViewはピンチズームを追加する場合(または、それはそれを持っている場合、既に私は私のMac上でマルチタッチを持っていません)。それはIBAction溶液で起こることはありません。

別の例では、あなたのコントローラにアクションメッセージを送信する(おそらく⌘+と⌘-キーボードショートカット付き)ズームインとズームアウトメニューコマンドになります。コントローラーは、(それが実装セッターメソッドを使用する)プロパティの値を増加または減少させることによって応答します。バインディングでは、画像ビューとスライダーの両方が無料で更新します。バインディングがなければ、あなたは明示的にそのスライダーを更新するために他をそのズーム倍率を更新するために、1を伝えると、画像ビューとスライダーの両方に話をしなければなりません。

あなたのウィンドウの隅に表示:

3番目の例では、「X%ズーム倍率」になります。スライダーのつまみを移動し、画像をunpinching、またはメニュー項目を押す/ピンチ:バインディングでは、これは関係なく、ユーザーが画像をズームする方法を無料で更新することはできません。バインディングがなければ、これはあなたの(少なくとも3つ)の変化、ズーム値のアクションメソッドでと話をする必要があり、まだ別のものになります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top