2011-10-28 12 views
5

に実際の表示画像のサイズを取得私はNSImageViewは、実際の表示サイズを取得する方法NSImageView

enter image description here

自動的NSImageではサイズを変更します

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

画像を表示するために以下のコードを使用しました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

異なるサイズにスケーリングされる可能性があります。 –