Ich verwende Storyboard (iOS 6.0), um einen Fotogalerie-Viewer für meine App zu erstellen. Dies ist, wie mein imageViewController in Storyboard eingerichtet ist:Prise zum Zoomen Auswirkung auf UIImageView in scrollView?
ich sicher gemacht haben und Anwenderwechsel mehrere Berührungen sowohl auf der Imageview und Scrollview zu aktivieren. Was ich tun möchte, ist, auf Prise möchte ich in die Bildansicht (maximale Skala 3) hineinzoomen und in der Lage sein, herum zu schwenken. Dies ist, was ich derzeit habe, obwohl die Pinch-Geste erkannt wird, ändert sich die Skala nicht.
- (IBAction)imagePinched:(id)sender {
if (pinchRecognizer.state == UIGestureRecognizerStateEnded || pinchRecognizer.state == UIGestureRecognizerStateChanged) {
NSLog(@"gesture.scale = %f", pinchRecognizer.scale);
CGFloat currentScale = self.fullScreenView.frame.size.width/self.fullScreenView.bounds.size.width;
CGFloat newScale = currentScale * pinchRecognizer.scale;
if (newScale < 1) {
newScale = 1;
}
if (newScale > 3) {
newScale = 3;
}
CGAffineTransform transform = CGAffineTransformMakeScale(newScale, newScale);
self.fullScreenView.transform = transform;
pinchRecognizer.scale = 1;
}
}
Die meisten Fragen und Tutorials online handeln von programmatisch die Ansichten erstellen und dies zu tun, aber der weniger Code, desto besser (in meinen Augen). Was ist der beste Weg, dies mit dem Storyboard umzusetzen? Vielen Dank im Voraus!!!
AKTUALISIERT:
Hier mein voller .m-Datei-Code ist:
- (void)viewDidLoad
{
[super viewDidLoad];
//Assign an image to this controller's imageView
fullScreenView.image = [UIImage imageNamed:imageString];
//Allows single and double tap to work
[singleTapRecognizer requireGestureRecognizerToFail: doubleTapRecognizer];
}
- (IBAction)imageTapped:(id)sender {
NSLog(@"Image Tapped.");
//On tap, fade out viewController like the twitter.app
[self dismissViewControllerAnimated:YES completion:nil];
}
- (IBAction)imageDoubleTapped:(id)sender {
NSLog(@"Image Double Tapped.");
//On double tap zoom into imageView to fill in the screen.
[fullScreenView setContentMode:UIViewContentModeScaleAspectFill];
}
- (IBAction)imagePinched:(id)sender {
if (pinchRecognizer.state == UIGestureRecognizerStateEnded || pinchRecognizer.state == UIGestureRecognizerStateChanged) {
NSLog(@"gesture.scale = %f", pinchRecognizer.scale);
CGFloat currentScale = self.fullScreenView.frame.size.width/self.fullScreenView.bounds.size.width;
CGFloat newScale = currentScale * pinchRecognizer.scale;
if (newScale < 1) {
newScale = 1;
}
if (newScale > 3) {
newScale = 3;
}
CGAffineTransform transform = CGAffineTransformMakeScale(newScale, newScale);
self.fullScreenView.transform = transform;
pinchRecognizer.scale = 1;
}
}
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
return self.fullScreenView;
}
-(void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale {
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
Ich löste meine Zweifel mit Ihrer Frage. Danke –
hast du die Antwort? – YaBoiSandeep