ios - UIScrollView not zooming -
so, have uiscrollview doing fine zooming @ first. have minimum , maximum zoom scales set , necessary delegate method set -(uiview*)viewforzoominginscrollview:(uiscrollview*)scrollview;. had 2 subviews set on (one small 1 of ball), , obviously, 1 zoom out , in other didn't (the ball view). wanted change both scale correctly, added smaller view (ball) other's list of subviews. however, there no zooming. can post code if necessary, wondering if issue sounds familiar , if have answer offer.
edit: here's code
header file
@interface numberlinescroll : uiscrollview { numberline* nline; id <uiscrollviewdelegate> delegate; } @property(nonatomic, retain)id <uiscrollviewdelegate> delegate; - (numberline*)getline; @end main file
#import "numberlinescroll.h" @implementation numberlinescroll @synthesize delegate; - (id)initwithframe:(cgrect)frame { self = [super initwithframe:frame]; if (self) { [self setuserinteractionenabled:yes]; nline = [[numberline alloc] initwithframe:cgrectmake(0, 0, 2100, 400)]; [self addsubview:nline]; self.minimumzoomscale = 0.5; self.maximumzoomscale = 3.0; } return self; } - (numberline*)getline {return nline;} - (void)touchesbegan:(nsset *)touches withevent:(uievent *)event {} - (void)touchesmoved:(nsset *)touches withevent:(uievent *)event {} - (void)dealloc { [nline release]; [super dealloc]; } @end this scroll view. nline view ball view , line drawn during drawrect. here's method implementations in delegate class:
- (void)scrollviewdidscroll:(uiscrollview *)scrollview {} - (void)dotest {nslog(@"test");} -(uiview*)viewforzoominginscrollview:(uiscrollview*)scrollview {return [nline getline];} -(void)scrollviewdidendzooming:(uiscrollview *)scrollview withview:(uiview *)view atscale:(float)scale { nslog(@"zoom ended"); } - (void)scrollviewdidzoom:(uiscrollview *)scrollview { ball* ball = [[nline getline] getball]; cgpoint newcenter = ball.center; newcenter.y = ball.center.y * scrollview.zoomscale; newcenter.x = ball.center.x * scrollview.zoomscale; [[nline getline] changeballoc:newcenter]; }
i think want managing subview when zoomin/out going on placed on uiscrollview
take care 2 things firstly return largesubview(contains ball view subview) on zooming time below delegate method.
-(uiview*)viewforzoominginscrollview:(uiscrollview*)scrollview { return largesubvew //here view contains smallview(ball) mentioned changed } manage small view's position zoomin/out scrollview.
- (void)scrollviewdidzoom:(uiscrollview *)scrollview { cgpoint newcenter = smallerviewcenter; //smallerviewcenter contains center point of smallerview(say ball),has set @ load time, , once newcenter.y = smallerview.y * scrollview.zoomscale; //new center calculated on original position newcenter.x = smallerview.x * scrollview.zoomscale; smallerview.center = newcenter; }
Comments
Post a Comment