iphone - Is there a way to move my imageview with the move of the slider thumb? -


i want move imageview user slide thumb of uislider , image view should have value of slider. 1 have idea this?? here's code snippets:

   -(void)addsliderx:frame andminimumvalue:(int)min andmaximumvalue:(int)max andslidervalue:(int)value{     cgrect frame1 = cgrectfromstring(frame);     statslider = [[uislider alloc]initwithframe:frame1];     [statslider setminimumtrackimage:[[uiimage imagenamed:@"greenslider.png"] stretchableimagewithleftcapwidth:10.0 topcapheight:10.0] forstate:uicontrolstatenormal];      [statslider setthumbimage:[uiimage imagenamed:@"sliderbar_greenthumb.png"] forstate:uicontrolstatenormal];     [statslider setminimumvalue:min];     [statslider setmaximumvalue:max];     statslider.continuous = yes;     [statslider addtarget:self action:@selector(valuechanged:) forcontrolevents:uicontroleventvaluechanged];     [statslider addtarget:self action:@selector(sliderchanged:) forcontrolevents:uicontroleventtouchupinside];     //bubbleviewcontroller = [[sfndoorbubbleviewcontroller alloc]initwithnibname:@"sfndoorbubbleviewcontroller"bundle:[nsbundle mainbundle]];      //popovercontroller = [[uipopovercontroller alloc] initwithcontentviewcontroller:bubbleviewcontroller];     //[popovercontroller setpopovercontentsize:bubbleviewcontroller.view.frame.size];     [self.view addsubview:statslider];  } -(void)valuechanged:(id)sender{       uislider *localslider = (uislider *)sender;     bubble = [[uiview alloc]init];     = [[uiimageview alloc]initwithimage:[uiimage imagenamed:@"sliderbar_handle_number.png"]];     greenslidervalue = [[nsstring alloc] initwithstring:[nsstring stringwithformat:@"%3.0f", [localslider value]]];     uilabel * val = [[uilabel alloc]init];      dsp =[greenslidervalue floatvalue];     val.text = greenslidervalue;     [bubbleviewcontroller updateslidervalueto:dsp];     cgfloat slidermax = localslider.maximumvalue;     cgfloat slidermin = localslider.minimumvalue;      cgfloat slidermaxmindiff = slidermax - slidermin;     cgfloat slidervalue = dsp;      if(slidermin < 0.0) {          slidervalue = dsp-slidermin;         slidermax = slidermax - slidermin;         slidermin = 0.0;         slidermaxmindiff = slidermax - slidermin;     }      cgfloat xcoord = ((slidervalue-slidermin)/slidermaxmindiff)*[localslider frame].size.width-bubbleviewcontroller.view.frame.size.width/2.0;      cgfloat halfmax = (slidermax+slidermin)/2.0;      if(slidervalue > halfmax) {          slidervalue = (slidervalue - halfmax)+(slidermin*1.0);         slidervalue = slidervalue/halfmax;         slidervalue = slidervalue*11.0;          xcoord = xcoord - slidervalue;     }      else if(slidervalue <  halfmax) {          slidervalue = (halfmax - slidervalue)+(slidermin*1.0);         slidervalue = slidervalue/halfmax;         slidervalue = slidervalue*11.0;          xcoord = xcoord + slidervalue;     }     [self.view addsubview:bubble];     [bubble addsubview:back];     [bubble addsubview:val];     bubble.frame = cgrectmake(xcoord, 500, bubbleviewcontroller.view.frame.size.width, bubbleviewcontroller.view.frame.size.height);  } 

everytime changedvalue: gets called create new uiview, uiimageview , uilabel.
instead of editing old instances. results old uiviews build "path".

in viewdidload can create these 3 views , set on each .tag property
viewdidload

uiview* bubble = [[uiview alloc]init]; uiimageview* = [[uiimageview alloc]initwithimage:[uiimageimagenamed:@"sliderbar_handle_number.png"]]; uilabel * val = [[uilabel alloc]init] //other configurations ... bubble.tag = 1; back.tag = 2; val.tag = 3;  [self.view addsubview:bubble]; [bubble addsubview:back]; [bubble addsubview:val]; 

now remove allocations, because want reuse existing views. , know tags.
(void)valuechanged:(id)sender

uislider *localslider = (uislider *)sender; nsstring* greenslidervalue = [[nsstring alloc] initwithstring:[nsstring stringwithformat:@"%3.0f", [localslider value]]]; uiview *bubble = (uiview*)[self.view.subviews viewwithtag:1]; uiimageview *back = (uiimageview*)[bubble.subviews viewwithtag:2]; uilabel *val = (uilabelw*)[bubble.subviews viewwithtag:3]; dsp =[greenslidervalue floatvalue]; val.text = greenslidervalue; [bubbleviewcontroller updateslidervalueto:dsp]; cgfloat slidermax = localslider.maximumvalue; cgfloat slidermin = localslider.minimumvalue;  cgfloat slidermaxmindiff = slidermax - slidermin; cgfloat slidervalue = dsp;  if(slidermin < 0.0) {  slidervalue = dsp-slidermin; slidermax = slidermax - slidermin; slidermin = 0.0; slidermaxmindiff = slidermax - slidermin; }  cgfloat xcoord = ((slidervalue-slidermin)/slidermaxmindiff)*[localslider frame].size.width-bubbleviewcontroller.view.frame.size.width/2.0;  cgfloat halfmax = (slidermax+slidermin)/2.0;  if(slidervalue > halfmax) {  slidervalue = (slidervalue - halfmax)+(slidermin*1.0); slidervalue = slidervalue/halfmax; slidervalue = slidervalue*11.0;  xcoord = xcoord - slidervalue; }  else if(slidervalue <  halfmax) {  slidervalue = (halfmax - slidervalue)+(slidermin*1.0); slidervalue = slidervalue/halfmax; slidervalue = slidervalue*11.0;  xcoord = xcoord + slidervalue; } bubble.frame = cgrectmake(xcoord, 500, bubbleviewcontroller.view.frame.size.width, bubbleviewcontroller.view.frame.size.height); 

now can use existing instances


Comments

Popular posts from this blog

php - What is the difference between $_SERVER['PATH_INFO'] and $_SERVER['ORIG_PATH_INFO']? -

fortran - Function return type mismatch -

queue - mq_receive: message too long -