NSSlider を介して IKImageView 内で画像のズーム率を設定するためのベスト プラクティスは何ですか?
IKImageView のズームインまたはズームアウト アクションにスライダーをバインドできました。明らかに、私が見たいのは、これらの両方のアクションを制御する単一のスライダーです。スライダーを変更するたびに画像が更新される場合に最適です (マウス ボタンがまだ離されていなくても継続的に)。
NSSlider を介して IKImageView 内で画像のズーム率を設定するためのベスト プラクティスは何ですか?
IKImageView のズームインまたはズームアウト アクションにスライダーをバインドできました。明らかに、私が見たいのは、これらの両方のアクションを制御する単一のスライダーです。スライダーを変更するたびに画像が更新される場合に最適です (マウス ボタンがまだ離されていなくても継続的に)。
このデモは多くのことを説明しています: ImageKitDemo
特に、このスニペットは私が探していたものです:
- (IBAction) zoomSliderDidChange:(id)sender
{
[addProductPhotoImageView setZoomFactor:[sender floatValue]];
}
Bindings の方法は、IK イメージ ビューの Zoom Factor とスライダーの Value の両方をコントローラーの同じプロパティにバインドすることです。スライダーがプロパティの値を変更すると、画像ビューに通知され、コントローラーから新しい値を取得します。
この方法の利点の 1 つは、ズームインとズームアウトの方法をさらに追加できることと、スライダーの値が古くならないことです。一例として、IKImageView がピンチ ズーム機能を追加した場合 (または既に機能している場合、私の Mac にはマルチタッチ機能がありません)、ユーザーはその方法でズームでき、スライダーは自動的に更新されます。それは解決策では起こりませんIBAction
。
もう 1 つの例は、コントローラーにアクション メッセージを送信する [ズームイン] および [ズームアウト] メニュー コマンド (おそらく ⌘+ および ⌘- キーボード ショートカットを使用) です。コントローラーは、プロパティの値を増減することで応答します (実装するセッター メソッドを使用)。バインディングを使用すると、画像ビューとスライダーの両方が無料で更新されます。バインディングがなければ、イメージ ビューとスライダーの両方に明示的に話しかけて、一方にズーム ファクターを更新し、もう一方にスライダーを更新するように指示する必要があります。
3 番目の例は、ウィンドウの隅にある「ズーム率: X%」の表示です。Bindings を使用すると、ユーザーがどのように画像をズームしても (スライダーのつまみを動かす、画像をピンチ/ピンチ解除する、またはメニュー項目を押す)、これは無料で更新できます。Bindings がなければ、(少なくとも 3 つの) ズーム値の変更アクション メソッドでこれに対処する必要があります。