【问题标题】:Vertical NSLevelIndicator OSX垂直 NSLevelIndicator OSX
【发布时间】:2014-09-23 23:07:56
【问题描述】:

我想知道是否有一种方法可以创建/修改 NSLevelIndicator 对象,使其可以垂直定位,即从下向上显示离散级别,而不是从左到右,因此它也可以用作界面构建的元素Xcode 中的库?

在 Apple 和非 Apple OSX 应用程序中有很多这样的级别显示示例,以及为什么这样的对象应该存在的很多原因,但是由于某种原因如何创建这样的对象(从我在开发者论坛)似乎不值得询问或“保密”。

是否有模板代码可以修改为具有此类属性的对象?

我什至不知道这样的对象是否真的应该从头开始编写?不可能完成的任务?

提前致谢!

【问题讨论】:

    标签: xcode macos cocoa osx-lion


    【解决方案1】:

    macOS 11.6 上的 Swift 5.5.1

    myLevelIndicator.frameRotation = 90
    

    如果您需要重新定位指示器以适应视图,请实现旋转中心是水平指示器的原点。

    所以,要设置从视图左侧旋转 20px 的水平指示器,计算水平指示器的新框架原点,不要忘记调整指示器水平时的高度,因为原始高度会影响旋转时的最终位置。

    myLevelIndicator.frame.origin = CGPoint(x: self.view.frame.minX+20+myLevelIndicator.frame.height, y: myLevelIndicator.frame.minY)
    

    当然,如果这对您有用,可以通过将控件放置在正确的位置以允许在 IB 内旋转来避免这种情况。有些人可能没有使用 IB 并以编程方式创建这些控件。

    【讨论】:

      【解决方案2】:

      尝试使用

      [NSView setFrameRotation:90];
      

      它很粗略,但比自定义视图更容易

      编辑:或者尝试

      [levelView setFrameCenterRotation:90];
      

      SetFrameRotation:90 为我围绕左下轴旋转了它,所以它最终被剪裁了。这个围绕中心旋转,所以你应该能够看到它。我刚刚制作了一个快速的游乐场来展示它:http://cl.ly/WsL8/Vertical%20LevelIndicatorView.playground.zip

      再次编辑:如果你仍然卡住,我在objective-c中做了一个带有垂直水平指示器的示例项目:http://cl.ly/WrdH/levelindicator.zip

      【讨论】:

      • 谢谢,但是在哪里?如何?哪个NSView?显然不是默认情况下属于应用程序主窗口的那个(导致它包含的所有内容轮换)?如果有人能提供更多细节,我将不胜感激。
      • 例如:[_levelIndicator setFrameRotation:90]; 不起作用。
      • @user3078414 我更新了答案,试试 setFrameCenterRotation:90
      • 感谢您的更新。然而,我正在将一个遗留的 SGI IRIX 应用程序移植到 OSX,并且更喜欢在 zippy 新 IDE 和 iOS 方面保持尽可能保守。到目前为止,既没有使用 swift 也没有使用游乐场。这是解决问题的绝对必须吗?在普通的 Xcode 中它似乎不起作用:“在 'NSLevelIndicatorCell 类型的对象上找不到属性 frameCenterRotation”。
      • @user3078414 抱歉回复晚了,但是是的,您可以创建 NSLevelIndicator 的子类并覆盖其 init 函数。在返回self之前在这个函数中添加[self setFrameCenterRotation:90];或者类似的东西,你应该很好。同样作为一般经验法则,我总是发现对象的任何“单元格”部分通常处理内容,例如 NSTextFieldCell 保存实际文本,而其父级处理框架的渲染等。
      猜你喜欢
      • 1970-01-01
      • 2013-10-15
      • 1970-01-01
      • 1970-01-01
      • 2012-10-30
      • 2021-09-12
      • 2014-07-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多