macos - NSImageView 图像纵横比填充?

标签 macos nsimageview

所以我习惯了UIImageView ,并能够设置其图像在其中显示的不同方式。例如 AspectFill模式等...

我想使用 NSImageView 完成同样的事情在 Mac 应用程序上。是否NSImageView工作方式类似于 UIImageView在这方面或者我将如何在 NSImageView 中显示图像并选择不同的方式来显示该图像?

最佳答案

您可能会发现子类化更容易 NSView并提供 CALayer这是否为你填补了方面。这是init可能看起来像这样 NSView子类。

- (id)initWithFrame:(NSRect)frame andImage:(NSImage*)image
{
  self = [super initWithFrame:frame];
  if (self) {
    self.layer = [[CALayer alloc] init];
    self.layer.contentsGravity = kCAGravityResizeAspectFill;
    self.layer.contents = image;
    self.wantsLayer = YES;
  }
  return self;
}

注意设置图层的顺序,然后设置想要的图层是非常重要 (如果你先设置了 WantsLayer,你会得到一个默认的支持层)。

你可以有一个 setImage简单地更新图层内容的方法。

关于macos - NSImageView 图像纵横比填充?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23002653/

相关文章:

xcode - 以编程方式在 Swift 3.0 中创建 NSImageView

objective-c - 如何将一个 NSImageView 置于另一个 NSImageView 的前面或后面?

macos - NSTableRowView 背景颜色仅在 subview 周围绘制

macos - 用于 USB 系绳和 WiFi 的 OSX 链接聚合?

cocoa - 获取 NSImageView 中 NSImage 的边界

cocoa - 如何平移和缩放 NSImage?

c++ - my_thread_global_end 线程没有退出,错误?

c++ - lldb - 在抛出 C++ 异常之前中断

Cocoa - 可以启动、暂停、恢复的计时器对象?

cocoa - 如何在 NSImageView 中设置内容切换动画?