Mittelinhalt von Uiscrollview bei kleinerIOS

Programmierung für iOS
Anonymous
 Mittelinhalt von Uiscrollview bei kleiner

Post by Anonymous »

Ich habe eine UIImageView in einem uiscrollView , den ich zum Zoomen und Scrollen verwende. Wenn das Bild / Inhalt der Bildlaufansicht größer ist als die Bildlaufansicht, funktioniert alles gut. Wenn das Bild jedoch kleiner als die Bildlaufansicht wird, klebt es an der oberen linken Ecke der Bildlaufansicht. Ich möchte es zentriert halten, wie die Fotos -App. < /p>

Alle Ideen oder Beispiele zum Aufbewahren des Inhalts der UiscrollView < /code> zentriert, wenn er kleiner ist? < /p>

Ich arbeite mit iPhone 3.0. Das Bild kehrt nach der oberen linken Ecke zurück, wenn ich es nach dem Erreichen des minimalen Zoompegels einklemmte. < /P>

Code: Select all

- (void)loadView {
[super loadView];

// set up main scroll view
imageScrollView = [[UIScrollView alloc] initWithFrame:[[self view] bounds]];
[imageScrollView setBackgroundColor:[UIColor blackColor]];
[imageScrollView setDelegate:self];
[imageScrollView setBouncesZoom:YES];
[[self view] addSubview:imageScrollView];

UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"WeCanDoIt.png"]];
[imageView setTag:ZOOM_VIEW_TAG];
[imageScrollView setContentSize:[imageView frame].size];
[imageScrollView addSubview:imageView];

CGSize imageSize = imageView.image.size;
[imageView release];

CGSize maxSize = imageScrollView.frame.size;
CGFloat widthRatio = maxSize.width / imageSize.width;
CGFloat heightRatio = maxSize.height / imageSize.height;
CGFloat initialZoom = (widthRatio > heightRatio) ? heightRatio : widthRatio;

[imageScrollView setMinimumZoomScale:initialZoom];
[imageScrollView setZoomScale:1];

float topInset = (maxSize.height - imageSize.height) / 2.0;
float sideInset = (maxSize.width - imageSize.width) / 2.0;
if (topInset < 0.0) topInset = 0.0;
if (sideInset < 0.0) sideInset = 0.0;
[imageScrollView setContentInset:UIEdgeInsetsMake(topInset, sideInset, -topInset, -sideInset)];
}

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
return [imageScrollView viewWithTag:ZOOM_VIEW_TAG];
}

/************************************** NOTE **************************************/
/* The following delegate method works around a known bug in zoomToRect:animated: */
/* In the next release after 3.0 this workaround will no longer be necessary      */
/**********************************************************************************/
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale {
[scrollView setZoomScale:scale+0.01 animated:NO];
[scrollView setZoomScale:scale animated:NO];
// END Bug workaround

CGSize maxSize = imageScrollView.frame.size;
CGSize viewSize = view.frame.size;
float topInset = (maxSize.height - viewSize.height) / 2.0;
float sideInset = (maxSize.width - viewSize.width) / 2.0;
if (topInset < 0.0) topInset = 0.0;
if (sideInset < 0.0) sideInset = 0.0;
[imageScrollView setContentInset:UIEdgeInsetsMake(topInset, sideInset, -topInset, -sideInset)];
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post