zoukankan      html  css  js  c++  java
  • UILabel字体加粗等属性和特效

    /*   

     Accessing the Text Attributes   

     text  property     

     font  property     

     textColor  property     

     textAlignment  property     

     lineBreakMode  property       

     enabled  property     

     Sizing the Label’s Text   

     adjustsFontSizeToFitWidth  property     

     baselineAdjustment  property     

     minimumFontSize  property   无例   

     numberOfLines  property     

     Managing Highlight Values   

     highlightedTextColor  property     

     highlighted  property     

     Drawing a Shadow   

     shadowColor  property     

     shadowOffset  property     

     Drawing and Positioning Overrides   

     – textRectForBounds:limitedToNumberOfLines: 无例    

     – drawTextInRect:  无例   

     Setting and Getting Attributes   

     userInteractionEnabled  property     

     */ 

    UILabel UIFont // default system font 17 plain


    UILabel垂直居上对齐[label sizeToFit];

    //设置文字过长时的显示格式 

    label.lineBreakMode = UILineBreakModeWordWrap;

    typedefenum {

        UILineBreakModeWordWrap =0,           // Wrap at word boundaries

        UILineBreakModeCharacterWrap,          // Wrap at character boundaries

        UILineBreakModeClip,           //截去多余部分 Simply clip when it hits the end of the rect截去多余部分 

        UILineBreakModeHeadTruncation, //截去头部Truncate at head of line: "...wxyz". Will truncate multiline text on first line

        UILineBreakModeTailTruncation,//截去尾部 Truncate at tail of line: "abcd...". Will truncate multiline text on last line

        UILineBreakModeMiddleTruncation,//截去中间 Truncate middle of line:  "ab...yz". Will truncate multiline text in the middle

    } UILineBreakMode;

    //设置label的行数,这个可以根据上节的UITextView自适应高度 

    label.numberOfLines = 2;

    label.lineBreakMode = UILineBreakModeWordWrap;

    label.textAlignment =  UITextAlignmentCenter;//设置文字对齐位置,居左,居中,居右 

    label.text = @ "123" ;//设置显示文字 

    //设置文字颜色,可以有多种颜色可以选择

    label.textColor = [UIColor whiteColor];

    label.backgroundColor = [UIColor blackColor];

    //设置字体:粗体,正常的是 SystemFontOfSize,调用系统的字体配置 

    label.font = [UIFont boldSystemFontOfSize:20];

    label.font = [UIFont fontWithName:@ "Arial Rounded MT Bold"  size:(36.0)];

    //[UIFont fontWithName:@ "Arial" size:14.0]]; //非加粗

    //设置文本是否高亮和高亮时的颜色

    scoreLabel.highlighted = YES; 

    scoreLabel.highlightedTextColor = [UIColor orangeColor]; 

    //设置阴影的颜色和阴影的偏移位置 

    scoreLabel.shadowColor = [UIColor redColor]; 

    scoreLabel.shadowOffset = CGSizeMake(1.0,1.0); 

    //设置是否能与用户进行交互 

    scoreLabel.userInteractionEnabled = YES;  

    //设置label中的文字是否可变,默认值是YES  

    scoreLabel.enabled = NO;

    //设置字体大小是否适应label宽度 

    label.adjustsFontSizeToFitWidth = YES; 

    //如果adjustsFontSizeToFitWidth属性设置为YES,这个属性就来控制文本基线的行为

    coreLabel.baselineAdjustment = UIBaselineAdjustmentNone

    typedefenum {

        UIBaselineAdjustmentAlignBaselines =0,// default. used when shrinking text to position based on the original baseline

        UIBaselineAdjustmentAlignCenters,

        UIBaselineAdjustmentNone,

    } UIBaselineAdjustment;

    //最小文字号数

    minimumFontSize

    设置背景色为透明 

    scoreLabel.backgroudColor=[UIColor clearColor];

    自定义的颜色:

    scoreLabel.backgroudColor=[UIColor clearColor];

    UIColor *color = [UIColor colorWithRed:1.0f green:50.0f blue:0.0f alpha:1.0f];

    scoreLabel.textColor = [UIColor color]

    //UIColor 里的 RGB 值是CGFloat类型的在0~1范围内,对应0~255的颜色值范围。

     

    - (CGRect)textRectForBounds:(CGRect)bounds limitedToNumberOfLines:(NSInteger)numberOfLines;

    //改变绘文字属性.重写时调用super可以按默认图形属性绘制,若自己完全重写绘制函数,就不用调用super了.

    - (void)drawTextInRect:(CGRect)rect;

    eg:

    UILabel *label = [[UILabelalloc] initWithFrame:CGRectMake(0, 0, 75, 40)];   //声明UIlbel并指定其位置和长宽
     label.backgroundColor = [UIColorclearColor];   //设置label的背景色,这里设置为透明色。
     label.font = [UIFont fontWithName:@"Helvetica-Bold" size:13];   //设置label的字体和字体大小。
    //lable的旋转
     label.transform = CGAffineTransformMakeRotation(0.1);     //设置label的旋转角度
     label.text = @“helloworld”;   //设置label所显示的文本
     label.textColor = [UIColorwhiteColor];    //设置文本的颜色
     label.shadowColor = [UIColorcolorWithWhite:0.1falpha:0.8f];    //设置文本的阴影色彩和透明度。
     label.shadowOffset = CGSizeMake(2.0f, 2.0f);     //设置阴影的倾斜角度。
     label.textAlignment = UITextAlignmentCenter;     //设置文本在label中显示的位置,这里为居中。
    //换行技巧:如下换行可实现多行显示,但要求label有足够的宽度。
     label.lineBreakMode = UILineBreakModeWordWrap;     //指定换行模式
     label.numberOfLines = 2;    // 指定label的行数

     

     

     

     

    让label自适应里面的文字,自动调整宽度和高度的

    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0,0,0,0)];这个frame是初设的,没关系,后面还会重新设置其size。
    [label setNumberOfLines:0];
    NSString *s = @"string......";
    UIFont *font = [UIFont fontWithName:@"Arial" size:12];
    CGSize size = CGSizeMake(320,2000);
    CGSize labelsize = [s sizeWithFont:font constrainedToSize:size lineBreakMode:UILineBreakModeWordWrap];
    [label setFrame:CGRectMake:(0,0, labelsize.width, labelsize.height)];
    [self.view addSubView:label];
    这样就可以对s赋值让其自动调整其大小了。

    UILabel跑马灯效果

    //http://www.cocoachina.com/bbs/read.php?tid=74540

    #import <UIKit/UIKit.h>

    @interface TextFlowView : UIView {

        

        //显示文本的标签

        UILabel *_firstLabel;

        UILabel *_secondLabel;

        

        //定时器

        NSTimer *_timer;

        

        //显示的文本

        NSString *_text;

        

        //是否需要滚动

        BOOL _needFlow;

        

        //控件的框架大小

        CGRect _frame;

        

        //文本的字体

        UIFont *_font;

        

        //当前第一个控件的索引

        NSInteger _startIndex;

        

        //定时器每次执行偏移后,累计的偏移量之和

        CGFloat _XOffset;

        

        //文本显示一行,需要的框架大小

        CGSize _textSize;

        

    }

    - (id)initWithFrame:(CGRect)frame Text:(NSString *)text;

    - (void)setFont:(UIFont *)font;

    - (void)setText:(NSString *)text;

    @end

    //////////////////////////////////////////////////////////////////////////////////

    #import "TextFlowView.h"

    @implementation TextFlowView

    #pragma mark -

    #pragma mark 内部调用

    #define SPACE_WIDTH 50

    #define LABEL_NUM 2

    //改变一个TRect的起始点位置,但是其终止店点的位置不变,因此会导致整个框架大小的变化

    - (CGRect)moveNewPoint:(CGPoint)point rect:(CGRect)rect

    {

        CGSize tmpSize;

        tmpSize.height = rect.size.height + (rect.origin.y - point.y);

        tmpSize.width = rect.size.width + (rect.origin.x - point.x);

        returnCGRectMake(point.x, point.y, tmpSize.width, tmpSize.height);

    }

    //开启定时器

    - (void)startRun

    {

        _timer = [NSTimerscheduledTimerWithTimeInterval:0.02target:selfselector:@selector(timerAction) userInfo:nilrepeats:YES];

    }

    //关闭定时器

    - (void)cancelRun

    {

        if (_timer) 

        {

            [_timerinvalidate];

        }

    }

    //定时器执行的操作

    - (void)timerAction

    {

        staticCGFloat offsetOnce = -1;

        _XOffset += offsetOnce;

        if (_XOffset +  _textSize.width <= 0) 

        {

            _XOffset += _textSize.width;

            _XOffset += SPACE_WIDTH;

        }

        [selfsetNeedsDisplay];

        

    }

    //计算在给定字体下,文本仅显示一行需要的框架大小

    - (CGSize)computeTextSize:(NSString *)text

    {

        if (text == nil) 

        {

            returnCGSizeMake(0, 0);

        }

        CGSize boundSize = CGSizeMake(10000, 100);

        CGSize stringSize = [_textsizeWithFont:_fontconstrainedToSize:boundSize lineBreakMode:UILineBreakModeWordWrap];

        return stringSize;

    }

    - (id)initWithFrame:(CGRect)frame Text:(NSString *)text

    {

        self = [superinitWithFrame:frame];

        if (self) 

        {

            _text = [text retain];

            _frame = frame;

            //默认的字体大小

            _font = [UIFontsystemFontOfSize:16.0F];

            self.backgroundColor = [UIColorredColor];

            //初始化标签

            //判断是否需要滚动效果

            _textSize = [selfcomputeTextSize:text];

            //需要滚动效果

            if (_textSize.width > frame.size.width) 

            {

                _needFlow = YES;

                [selfstartRun];

            }

        }

        returnself;

    }

    // Only override drawRect: if you perform custom drawing.

    // An empty implementation adversely affects performance during animation.

    - (void)drawRect:(CGRect)rect

    {

        CGContextRef context= UIGraphicsGetCurrentContext();

        CGContextSetFillColorWithColor(context, [UIColorwhiteColor].CGColor);

        // Drawing code

        CGFloat startYOffset = (rect.size.height - _textSize.height)/2;

        CGPoint origin = rect.origin;

        if (_needFlow == YES) 

        {

    //        NSLog(@"OFFSETX:%f", _XOffset);

    //        NSLog(@"text%f",_textSize.width);

            rect = [selfmoveNewPoint:CGPointMake(_XOffset, startYOffset) rect:rect];

    //        NSLog(@"rect X:%f  Y:%f",rect.origin.x, rect.origin.y);

    //        NSLog(@"rect W:%f  H:%f", rect.size.width, rect.size.height);

            while (rect.origin.x <= rect.size.width+rect.origin.x) 

            {

                [_textdrawInRect:rect withFont:_font];

                rect = [selfmoveNewPoint:CGPointMake(rect.origin.x+_textSize.width+SPACE_WIDTH, rect.origin.y) rect:rect];

    //            NSLog(@"inner->rect X:%f  Y:%f",rect.origin.x, rect.origin.y);

    //            NSLog(@"inner->rect W:%f  H:%f", rect.size.width, rect.size.height);

            }

            

        }

        else

        {

            //在控件的中间绘制文本

            origin.x = (rect.size.width - _textSize.width)/2;

            origin.y = (rect.size.height - _textSize.height)/2;

            rect.origin = origin;

            [_textdrawInRect:rect withFont:_font];

        }

    }

    - (void)dealloc

    {

        [_textrelease];

        [superdealloc];

    }

    #pragma mark -

    #pragma mark 外部调用

    - (void)setFont:(UIFont *)font

    {

        _font = font;

    }

    - (void)setText:(NSString *)text

    {

        [_textrelease];

        _text = [text retain];

    }

    @end



    美化UILabel中的字体代码分享 
    http://www.devdiv.com/iOS_iPhone-%E7%BE%8E%E5%8C%96UILabel%E4%B8%AD%E7%9A%84%E5%AD%97%E4%BD%93%E4%BB%A3%E7%A0%81%E5%88%86%E4%BA%AB-thread-122319-1-1.html
    UILabel跑马灯效果
    http://hi.baidu.com/suxinde2009/blog/item/5bcd0e60dd9bb77f0d33fac3.html
    分享一个可垂直顶端对齐的UILabel
    http://www.devdiv.com/%E5%88%86%E4%BA%AB%E4%B8%80%E4%B8%AA%E5%8F%AF%E5%9E%82%E7%9B%B4%E9%A1%B6%E7%AB%AF%E5%AF%B9%E9%BD%90%E7%9A%84UILabel-weblog-64796-7239.html
     
    复制代码
    //侬侬官网连接  
        UILabel *labelGovUrl = [[UILabel alloc] initWithFrame:CGRectMake(73.0, 330.0, 180.0, 40.0)];  
        labelGovUrl.autoresizingMask = (UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight);  
        labelGovUrl.text = @"侬侬官网 >";  
        labelGovUrl.backgroundColor = [UIColor clearColor];  
        labelGovUrl.textColor = [UIColor whiteColor];  
        labelGovUrl.font = [UIFont fontWithName:@"Helvetica-Bold" size:14];  
        labelGovUrl.userInteractionEnabled = YES;  
        labelGovUrl.tag = K_NNGOV_WEBSITE_LABEL_URL;  
      
        UITapGestureRecognizer *tapGesture =  
        [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(openURL:)] autorelease];  
        [labelGovUrl addGestureRecognizer:tapGesture];  
        [self.view addSubview:labelGovUrl];  
        [labelGovUrl release];  
      
      
    -(void)openURL:(UITapGestureRecognizer *)gesture{  
        NSInteger tag = gesture.view.tag;  
        NSString *url = nil;  
        if (tag == K_NNWEIBO_LABEL_URL) {  
            url = @"http://t.qq.com/yourgame/";  
        }  
        if(tag == K_NNGOV_WEBSITE_LABEL_URL){  
            url = @"http://www.zjnn.cn/";  
        }  
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];  
    }  
    复制代码
  • 相关阅读:
    多个相同结构的表的字段的修改、添加
    SQL SERVER 查询去重 PARTITION BY
    message from server: "Host 'xxx' is not allowed to connect to th
    jdk 1.8 连接数据库
    恢复SQLServer数据库后,如何同步登陆名和用户名
    无法识别的属性“targetFramework”。请注意属性名称区分大小写。错误解决办法
    jquery.tablesorter 使用
    MD5加密
    C# 判断是否是节假日
    word ladder
  • 原文地址:https://www.cnblogs.com/mawenqiangios/p/5884364.html
Copyright © 2011-2022 走看看