2011-10-28 61 views
5

實際顯示圖像大小我用下面的代碼來顯示圖像得到NSImageView

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中自動

enter image description here

如何獲得的實際顯示尺寸的NSImage?

歡迎任何評論

回答

4

我有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); 
} 
0

你可以在NSImage上使用size屬性來獲得顯示尺寸嗎?

+0

通常不會,也就是實際圖像的原始尺寸,而不是大小,它是在視圖中當前呈現,它可能縮放到不同的大小。 –