ios - UILabel rotationGesture programmatically -
i have uilabel created programmatically. i'm able rotate after going through few tutorials using uirotationgesturerecognizer, problem is, when re-size font size using slider, label moves out of screen. help? please, check sample code below,
problem: when move slider created using ib, label changes accordingly, after using uirotationgesture(i.e making label vertical or that), when move slider, label runs off screen..please try out below code, understand problem easily.
edited code make easier understand.
.h file
@interface viewcontroller : uiviewcontroller { uilabel *label; uitouch *touch; iboutlet uislider *fontsizeslider; } -(ibaction)fontsizevaluechanged:(id)sender; @end .m file
- (void)viewdidload { [super viewdidload]; // additional setup after loading view, typically nib. label = [[uilabel alloc] initwithframe:cgrectmake(0, 50, 180, 50)]; // stuff [label settext:@"begining of end"]; label.textalignment=uitextalignmentcenter; label.numberoflines=1; //label.userinteractionenabled=yes; [self.view addsubview:label]; uirotationgesturerecognizer *rotationgesture = [[uirotationgesturerecognizer alloc]initwithtarget:self action:@selector(handlerotate:)]; [self.view addgesturerecognizer:rotationgesture]; } -(void)handlerotate:(uirotationgesturerecognizer *) rotationgesture { //nslog(@"handlerotate"); cgfloat angle = rotationgesture.rotation; label.transform = cgaffinetransformrotate(label.transform, angle); rotationgesture.rotation = 0.0; } -(ibaction)fontsizevaluechanged:(id)sender { label.font = [uifont systemfontofsize:fontsizeslider.value]; label.linebreakmode = uilinebreakmodewordwrap; //[self.view addsubview:label]; cgsize expectedlabelsize = [label.text sizewithfont:label.font constrainedtosize:label.frame.size linebreakmode:uilinebreakmodewordwrap]; cgrect newframe = label.frame; newframe.size.width=650; newframe.size.height = expectedlabelsize.height; label.frame = newframe; label.numberoflines = 0; [label sizetofit]; //label.frame = cgrectmake(label.frame.origin.x, label.frame.origin.y, label.frame.size.width, newframe.size.height); }
Comments
Post a Comment