【问题标题】:get the actual display image size on NSImageView获取 NSImageView 上的实际显示图像大小
【发布时间】:2016-03-11 03:25:25
【问题描述】:

我使用下面的代码显示图像

NSImage *image = [[[NSImage alloc] initWithContentsOfURL:url] autorelease];
NSImageView *newImageView = nil;
newImageView = [[NSImageView alloc] initWithFrame:[self bounds]];
[newImageView setImage:image];
[newImageView setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable];

NSImageView 会自动调整 NSimage 的大小

如何获取NSImage的实际显示尺寸?

欢迎评论

【问题讨论】:

    标签: cocoa


    【解决方案1】:

    我有这样一个iOS的方法,你可以适应它:

    @implementation UIImageView (additions)
    - (CGSize)imageScale {
        CGFloat sx = self.frame.size.width / self.image.size.width;
        CGFloat sy = self.frame.size.height / self.image.size.height;
        CGFloat s = 1.0;
        switch (self.contentMode) {
            case UIViewContentModeScaleAspectFit:
                s = fminf(sx, sy);
                return CGSizeMake(s, s);
                break;
    
            case UIViewContentModeScaleAspectFill:
                s = fmaxf(sx, sy);
                return CGSizeMake(s, s);
                break;
    
            case UIViewContentModeScaleToFill:
                return CGSizeMake(sx, sy);
    
            default:
                return CGSizeMake(s, s);
        }
    }
    
    - (CGRect)imageRect {
        CGSize imgScale = [self imageScale];
        return CGRectCenteredInCGRect(CGRectFromCGSize(CGSizeScale(self.image.size, imgScale.width, imgScale.height)), self.frame);
    }
    @end
    
    
    
    CGRect CGRectCenteredInCGRect(CGRect inner, CGRect outer) {
        return CGRectMake((outer.size.width - inner.size.width) / 2.0, (outer.size.height - inner.size.height) / 2.0, inner.size.width, inner.size.height);
    }
    

    【讨论】:

      【解决方案2】:

      你可以使用 NSImage 上的 size 属性来获取显示大小吗?

      【讨论】:

      • 通常不是,这是实际图像的原始大小,而不是当前在视图中呈现的大小,可能会缩放到不同的大小。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-05
      • 1970-01-01
      • 2012-09-15
      • 2013-06-06
      • 1970-01-01
      相关资源
      最近更新 更多