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
Post a Comment