2010-01-14 11 views
5

Estoy intentando agregar barras de desplazamiento a IKImageView. Básicamente en este momento, necesito algunos ejemplos de un programa que carga una imagen en una vista, y si la ventana es demasiado pequeña, configura barras de desplazamiento que hacen lo correcto ...Ejemplos de Objective C buscados

¿Por qué no puedo encontrar estos ejemplos? en el sitio apple dev?

Agregado Info:

Después de mirar ImagekitDemo veo que, evidentemente, que es necesario para incrustar el IKIMageView en un ScrollView. (y de alguna manera eso hace que las propiedades has___Scroller de IKImageView SÍ ...)

Sin embargo, ahora (Y esto también es cierto en ImageKitDemo) Las barras de desplazamiento están bien siempre que solo se necesite una (o ninguna). Sin embargo, tan pronto como se necesiten ambos, y cualquiera de las dimensiones de la ventana sea más pequeña que la imagen, AMBAS barras de desplazamiento desaparecerán.

El desplazamiento del mouse aún funciona.

+0

Por favor, vea mi respuesta en su [otra pregunta] (http://stackoverflow.com/questions/2060614). –

Respuesta

0

El mejor lugar para comenzar es el Scroll View Programming Guide. Básicamente, debe colocar IKImageView dentro de NSScrollView. Si el tamaño de IKImageView excede el rectángulo visible de NSScrollView, aparecerán las barras de desplazamiento.

La siguiente sample uses IKImageView para realizar varias operaciones de zoom y cambio de tamaño.

+0

aunque el IKImageView afirma que tiene barras de desplazamiento en sí? Además, cuando hago eso, la imagen se centra en la gran vista de la imagen y, por lo tanto, solo una parte es visible ... y cuando la vista de la imagen es más pequeña que la vista de desplazamiento, terminas con fondos blancos. Supongo que PUEDO hacer algo normal al hacer que la imagen sea del tamaño de la imagen y tenga otra vista gris detrás ... pero ese tipo de derrotas parte del propósito de la ikimageview ... –

+0

Mis disculpas, leí la documentación muy rápido. El "zoomImageTo ..." está hecho para cambiar el rectángulo de la imagen y, por lo tanto, la parte visible en IKImageView. Hay algunas propiedades que controlan si las barras de desplazamiento son visibles o no. Además, puede echar un vistazo al siguiente código de ejemplo: http://developer.apple.com/mac/library/samplecode/IKImageViewDemo/index.html –

+0

Sí, he intentado modificar las propiedades, pero [_imageView setHasHorizontalScroller: YES] no tiene ningún efecto ([_imageView hasHorizontalScroller] devuelve 0 inmediatamente después) Y ese ejemplo es con lo que he estado trabajando. Parece mostrar cómo hacer todo PERO barras de desplazamiento B-) –

0

ZoomViewController.h

@interface ZoomViewController : UIViewController <UIScrollViewDelegate> 
{ 
    ForecastImage* detailImage; // wrapper class around UIImage (optional - could just be UIImage) 

    IBOutlet UIImageView* imageView; 
    IBOutlet DoubleTapScrollView* zoomableScrollView; 
} 

@property (readwrite, nonatomic, retain) ForecastImage* detailImage; 

- (IBAction) dismissZoomViewController; 

- (UIView *) viewForZoomingInScrollView:(UIScrollView *)scrollView; 

- (void) scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale; 

@end 

ZoomViewController.m

@implementation ZoomViewController 

@synthesize detailImage; 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
} 

- (void)viewWillAppear:(BOOL)animated 
{ 
    [imageView setImage:[self.detailImage renderedImage]]; 

    [zoomableScrollView setContentSize:[[imageView image] size]]; 
    [zoomableScrollView setMaximumZoomScale:5.0]; 
    [zoomableScrollView setMinimumZoomScale:0.25]; 
} 

- (void) viewDidAppear:(BOOL)animated 
{ 
    self.navigationItem.title = [SearchService getDisplayName:[self.detailImage forecastArea]]; 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    return (interfaceOrientation == UIInterfaceOrientationPortrait); 
} 


- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; // Releases the view if it doesn't have a superview 
    // Release anything that's not essential, such as cached data 
} 


- (void)dealloc 
{ 
    imageView.image = nil; 
    self.detailImage = nil; 

    [super dealloc]; 
} 

- (IBAction) dismissZoomViewController 
{ 
    [self dismissModalViewControllerAnimated:YES]; 
} 

#pragma mark Pinch-n-Zoom 

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView 
{ 
    return imageView; 
} 

- (void) scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale 
{ 
    CGSize newSize = CGSizeMake(imageView.image.size.width * scale, imageView.image.size.height * scale); 
    [scrollView setContentSize:newSize]; 
} 

@end 
+0

Sí, tengo barras de desplazamiento para trabajar con un NSView, pero eso no hace zoom, rotación y recorte para mí ... Me gustaría que IKImageView trabajo ... –

+0

lo siento, tengo el iPhone en el cerebro y leí mal la pregunta – slf