代码如下
UIFont *font = [UIFont systemFontOfSize:25];    CGSize size = [text sizeWithFont:font constrainedToSize:CGSizeMake(320, 2000.0) lineBreakMode:UILineBreakModeWordWrap]; 
    
    int w = size.width;//一个汉字的宽度
         size = [text sizeWithFont:font constrainedToSize:CGSizeMake(w, 2000.0) lineBreakMode:UILineBreakModeWordWrap]; 
    int h = size.height;

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0,  w,h)];
label.backgroundColor = [UIColor clearColor];
label.textColor = [UIColor whiteColor];
label.font = font;
label.text = text;
label.numberOfLines =  0;
label.shadowColor = [UIColor darkGrayColor];
label.shadowOffset = CGSizeMake(1, 1);
 这个是自己用代码创建的一个UILabel,用来显示自定义的文字,当屏幕竖立的时候文字显示正常
当屏幕横着放的时候,文字没有跟着屏幕调整,屏幕横着,文字就向上输出显示,当我把CGRectMake(0, 0,  w,h)中的w跟h位置
调换以后,文字就横着摆放了,但是每一个字的输出方向并没有改变,比如“我”这个字,在横屏的时候就是向左倾斜90度显示的,是不是要调每一个字的输出方式呢???

解决方案 »

  1.   

    在 willRotate... 函数中,重新设置一下 frame 呢?
      

  2.   

    主观上应该不用,你可以尝试,写一个横屏一个竖屏的方法,也就是整个UI的布局分部写一个横屏的一个竖屏的,他字体本来就是可以转过去的,这个苹果有一个方法的,整个页面转过去各个控件跟着转,就是UI布局要重新分部
      

  3.   

    我只做横屏的,所以把XIB界面直接调成了Landscape然后动态创建UILabel就出现我描述的问题了,字的显示还是竖屏的显示2位说的方法我都会试试看,谢谢你们的思路
      

  4.   

    我重新写了一个DEMO来测试,新建一个single view application,设置为Landscape,横屏显示
    界面上面添加一个BUTTON,用来动态的创建UILabel
    如下
    UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 200.0, 50.0)]; 
        //设置阴影  
        [label setShadowColor:[UIColor blackColor]];  
        [label setShadowOffset:CGSizeMake(-2, 3)];  
        
        
        //设置是否能与用户进行交互       
        label.userInteractionEnabled = YES;       
        
        //设置label中的文字是否可变,默认值是YES       
        label.enabled = NO;    
        
        //设置高亮       
        label.highlighted = YES;       
        label.highlightedTextColor = [UIColor orangeColor];     
        
        //设置label的行数       
        label.numberOfLines = 0;      
        //设置字体大小适应label宽度       
        label.adjustsFontSizeToFitWidth = YES;   
        
        //设置字体:粗体,正常的是 SystemFontOfSize       
        label.font = [UIFont boldSystemFontOfSize:20];   
        
        //设置显示文字       
        label.text = @"请输入用户名!";     
         
      
        label.baselineAdjustment = UIBaselineAdjustmentNone; 
        [self.view addSubview:label]; 当点击按钮以后文字显示在屏幕左上角,显示正常当我重新写一个类如下
    @implementation showText
    - (void) show{
        UIWindow *window = [[[UIApplication sharedApplication] windows] objectAtIndex:0];
        UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 200, 50)]; 
        //设置阴影  
        [label setShadowColor:[UIColor blackColor]];  
        [label setShadowOffset:CGSizeMake(-2, 3)];  
        
        
        //设置是否能与用户进行交互       
        label.userInteractionEnabled = YES;       
        
        //设置label中的文字是否可变,默认值是YES       
        label.enabled = NO;    
        
        //设置高亮       
        label.highlighted = YES;       
        label.highlightedTextColor = [UIColor orangeColor];     
        
        //设置label的行数       
        label.numberOfLines = 1;          
        //设置字体大小适应label宽度       
        label.adjustsFontSizeToFitWidth = YES;   
        
        //设置字体:粗体,正常的是 SystemFontOfSize       
        label.font = [UIFont boldSystemFontOfSize:20];   
        
        //设置显示文字       
        label.text = @"请输入用户名!";     
             [window addSubview:label];
    }
    @end点击按钮的时候调用如下
    showText *toast = [[showText alloc] autorelease];
        [toast show];这个时候文字就显示在屏幕的左下角,并且是向上输出的
    请问是不是要设置输出的坐标,等于说这个时候文字是没有跟着屏幕转动的