iphone - IOS ScrollView Issues -


hey i'm following tutorial , on first step experiencing weird behavior. tutorial on creating scroll views images , ends showing how create paged horizontal scrollview page controller. followed first section , things seemed working fine. when ran code did not perform properly, after hour of debugging downloaded final project, ran on phone check if working correctly (it was) copied code required files in project. project still wouldn't run. figured must way in story board configured on project setup. oped working example cleared storyboard , created views , segues self, in exact same way , order had done in project. bam! still worked, when deleted views in story board , recreated them in exact same fashion, still nothing. tutorial , tell me if i'm going crazy or experience similar results. have narrowed down 2 possibilities, project provided @ end of tutorial created differently , delegates or outlets hooked in way works project, or project created earlier version of iphone development kit works current version of xcode not when create new project. again new throw code i'm using , hope best.

viewcontroller.h file:

#import <uikit/uikit.h>  @interface viewcontroller : uiviewcontroller <uiscrollviewdelegate>  @property (nonatomic, strong) iboutlet uiscrollview *scrollview;  @end 

viewcontroller.m file:

#import "viewcontroller.h"  @interface viewcontroller () @property (nonatomic, strong) uiimageview *imageview;  - (void)centerscrollviewcontents; - (void)scrollviewdoubletapped:(uitapgesturerecognizer*)recognizer; - (void)scrollviewtwofingertapped:(uitapgesturerecognizer*)recognizer; @end  @implementation viewcontroller  @synthesize scrollview = _scrollview;  @synthesize imageview = _imageview;  - (void)centerscrollviewcontents {     cgsize boundssize = self.scrollview.bounds.size;     cgrect contentsframe = self.imageview.frame;      if (contentsframe.size.width < boundssize.width) {         contentsframe.origin.x = (boundssize.width - contentsframe.size.width) / 2.0f;     } else {         contentsframe.origin.x = 0.0f;     }      if (contentsframe.size.height < boundssize.height) {         contentsframe.origin.y = (boundssize.height - contentsframe.size.height) / 2.0f;     } else {         contentsframe.origin.y = 0.0f;     }      self.imageview.frame = contentsframe; }  - (void)scrollviewdoubletapped:(uitapgesturerecognizer*)recognizer {     // location within image view tapped     cgpoint pointinview = [recognizer locationinview:self.imageview];      // zoom scale that's zoomed in slightly, capped @ maximum zoom scale specified scroll view     cgfloat newzoomscale = self.scrollview.zoomscale * 1.5f;     newzoomscale = min(newzoomscale, self.scrollview.maximumzoomscale);      // figure out rect want zoom to, zoom     cgsize scrollviewsize = self.scrollview.bounds.size;      cgfloat w = scrollviewsize.width / newzoomscale;     cgfloat h = scrollviewsize.height / newzoomscale;     cgfloat x = pointinview.x - (w / 2.0f);     cgfloat y = pointinview.y - (h / 2.0f);      cgrect recttozoomto = cgrectmake(x, y, w, h);      [self.scrollview zoomtorect:recttozoomto animated:yes]; }  - (void)scrollviewtwofingertapped:(uitapgesturerecognizer*)recognizer {     // zoom out slightly, capping @ minimum zoom scale specified scroll view     cgfloat newzoomscale = self.scrollview.zoomscale / 1.5f;     newzoomscale = max(newzoomscale, self.scrollview.minimumzoomscale);     [self.scrollview setzoomscale:newzoomscale animated:yes]; }  - (void)viewdidload {     [super viewdidload];      // set nice title     self.title = @"image";      // set image want scroll & zoom , add scroll view     uiimage *image = [uiimage imagenamed:@"photo1.png"];     self.imageview = [[uiimageview alloc] initwithimage:image];     self.imageview.frame = (cgrect){.origin=cgpointmake(0.0f, 0.0f), .size=image.size};     [self.scrollview addsubview:self.imageview];      // tell scroll view size of contents     self.scrollview.contentsize = image.size;      uitapgesturerecognizer *doubletaprecognizer = [[uitapgesturerecognizer alloc] initwithtarget:self action:@selector(scrollviewdoubletapped:)];     doubletaprecognizer.numberoftapsrequired = 2;     doubletaprecognizer.numberoftouchesrequired = 1;     [self.scrollview addgesturerecognizer:doubletaprecognizer];      uitapgesturerecognizer *twofingertaprecognizer = [[uitapgesturerecognizer alloc] initwithtarget:self action:@selector(scrollviewtwofingertapped:)];     twofingertaprecognizer.numberoftapsrequired = 1;     twofingertaprecognizer.numberoftouchesrequired = 2;     [self.scrollview addgesturerecognizer:twofingertaprecognizer]; }  - (void)viewwillappear:(bool)animated {     [super viewwillappear:animated];      // set minimum & maximum zoom scales     cgrect scrollviewframe = self.scrollview.frame;     cgfloat scalewidth = scrollviewframe.size.width / self.scrollview.contentsize.width;     cgfloat scaleheight = scrollviewframe.size.height / self.scrollview.contentsize.height;     cgfloat minscale = min(scalewidth, scaleheight);      self.scrollview.minimumzoomscale = minscale;     self.scrollview.maximumzoomscale = 1.0f;     self.scrollview.zoomscale = minscale;      [self centerscrollviewcontents]; }  - (void)viewdidunload {     [super viewdidunload];     // release retained subviews of main view. }  - (bool)shouldautorotatetointerfaceorientation:(uiinterfaceorientation)interfaceorientation {     return (interfaceorientation != uiinterfaceorientationportraitupsidedown); }  - (uiview*)viewforzoominginscrollview:(uiscrollview *)scrollview {         // return view want zoom     return self.imageview; }  - (void)scrollviewdidzoom:(uiscrollview *)scrollview {     // scroll view has zoomed, need re-center contents     [self centerscrollviewcontents]; }  @end 

the above code doesn't work in tutorials project. following uiscrollview delegate method viewforzoominginscrollview produces error:

2013-05-14 10:01:18.585 testscrollview[3809:907] made it

may 14 10:01:18 scott-laroses-iphone testscrollview[3809] : cgaffinetransforminvert: singular matrix.

may 14 10:01:18 scott-laroses-iphone testscrollview[3809] : cgaffinetransforminvert: singular matrix.

which makes me think delate isn't set despite me doing same in tutorial , programmatically when didn't work. ideas?

your problem may zoomscale , minimumzoomscale if value assigned 0. make sure value never 0 2 properties.


Comments

Popular posts from this blog

jquery - How can I dynamically add a browser tab? -

node.js - Getting the socket id,user id pair of a logged in user(s) -

keyboard - C++ GetAsyncKeyState alternative -