【问题标题】:IKImageView zooming controlled by an NSSlider由 NSSlider 控制的 IKImageView 缩放
【发布时间】:2009-12-18 14:01:24
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    这个演示解释了很多:ImageKitDemo

    特别是,这个 sn-p 是我正在寻找的:

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

    【讨论】:

    • 您需要先设置滑块的minValuemaxValue,很可能在IB 中。
    【解决方案2】:

    绑定方式是将 IK 图像视图的缩放因子和滑块的值绑定到控制器的同一属性。当滑块改变属性的值时,会通知图像视图,并从您的控制器中获取新值。

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

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

    第三个示例是在窗口一角显示“缩放系数:X%”。使用 Bindings,无论用户如何缩放图像,它都可以免费更新:移动滑块拇指、捏合/松开图像或按下菜单项。如果没有绑定,这将是您在(至少三个)更改缩放值操作方法中必须讨论的另一件事。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-28
      • 2023-04-01
      • 2018-11-25
      • 2011-12-24
      • 2019-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多