IKImageView缩放由NSSlider控制

时间:2009-12-18 14:01:24

标签: objective-c cocoa interface-builder cocoa-bindings ikimageview

通过NSSlider在IKImageView中设置图像缩放系数的最佳做法是什么?

我能够将滑块绑定到IKImageView的放大缩小操作。 显然,我宁愿看到的是一个控制这两个动作的滑块。 最好,如果在每次更改滑块后刷新图像(连续,即使鼠标按钮尚未释放)。

2 个答案:

答案 0 :(得分:1)

此演示解释了很多:ImageKitDemo

特别是,我想要的是这个片段:

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

答案 1 :(得分:1)

Bindings方式是将IK图像视图的缩放系数和滑块的值绑定到控制器的同一属性。当滑块更改属性的值时,将通知图像视图,并从控制器获取新值。

这种方式的一个优点是您可以添加更多放大和缩小的方法,并且滑块中的值不会过时。例如,如果IKImageView添加了缩放缩放(或者如果它已经存在 - 我的Mac上没有多点触控),则用户可以这样缩放,滑块将自动更新。 IBAction解决方案不会发生这种情况。

另一个示例是“放大”和“缩小”菜单命令(可能带有⌘+和⌘-键盘快捷键),可向控制器发送操作消息。您的控制器将通过增加或减少属性的值来响应(使用它实现的setter方法)。使用Bindings,图像视图和滑块都将免费更新。如果没有Bindings,你必须明确地与图像视图和滑块对话,告诉一个人更新它的缩放因子,另一个更新它的滑块。

第三个例子是窗口一角的“缩放系数:X%”显示。使用Bindings,无论用户如何缩放图像,都可以免费更新:移动滑块,移动/取消固定图像或按菜单项。如果没有Bindings,这将是你必须在你的(至少三个)更改 - 缩放 - 值动作方法中谈论的另一件事。