2011-10-28 7 views
5

he utilizado los códigos siguientes para mostrar una imagenobtener el tamaño real en la visualización NSImageView

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

la NSImageView adaptará la NSImage automáticamente

enter image description here

Cómo obtener el tamaño real de la pantalla del NSImage?

la bienvenida a cualquier comentario

Respuesta

4

Tengo un procedimiento de este tipo para iOS, es posible que pueda adaptarlo:

@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

¿Se puede utilizar la propiedad de tamaño en NSImage para obtener el tamaño de la pantalla?

+0

Normalmente no, ese es el tamaño nativo de la imagen real, no el tamaño que se hace actualmente en la vista , donde es probable escalar a un tamaño diferente. –

Cuestiones relacionadas