• 使用YXHUD


    使用YXHUD

    这是本人自己设计的一个类,但功能很不完善,先看看效果:

    源码:

    YXHUD.h 与 YXHUD.m

    //
    //  YXHUD.h
    //  UILabel
    //
    //  Created by YouXianMing on 14-9-16.
    //  Copyright (c) 2014年 YouXianMing. All rights reserved.
    //
    
    #import <UIKit/UIKit.h>
    
    @interface YXHUD : UIView
    
    @property (nonatomic, strong) NSString            *showString;           // 普通文本
    @property (nonatomic, strong) NSAttributedString  *showAttributedString; // 富文本
    @property (nonatomic, assign) CGFloat              fixWidth;             // 固定的宽度
    @property (nonatomic, assign) CGSize               gapSize;              // 间隙宽度
    @property (nonatomic, assign) CGFloat              cornerRadius;         // 圆角
    
    - (void)fix;
    
    @end
    //
    //  YXHUD.m
    //  UILabel
    //
    //  Created by YouXianMing on 14-9-16.
    //  Copyright (c) 2014年 YouXianMing. All rights reserved.
    //
    
    #import "YXHUD.h"
    
    @interface YXHUD ()
    
    @property (nonatomic, strong) UILabel  *textLabel;
    @property (nonatomic, strong) UIView   *backedView;
    
    @end
    
    @implementation YXHUD
    
    - (id)initWithFrame:(CGRect)frame
    {
        self = [super initWithFrame:frame];
        if (self)
        {
            // backedView(背景view)
            _backedView = [UIView new];
            _backedView.backgroundColor = [UIColor blackColor];
            [self addSubview:_backedView];
         
            // textLabel(文字label)
            _textLabel               = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 200, 0)];
            _textLabel.textColor     = [UIColor whiteColor];
            _textLabel.numberOfLines = 0; // 设置自动换行
            [_backedView addSubview:_textLabel];
        }
        return self;
    }
    
    #pragma mark - getter.setter方法
    
    // 设置普通文本
    @synthesize showString = _showString;
    - (void)setShowString:(NSString *)showString
    {
        _showString     = showString;
        _textLabel.text = showString;
    }
    - (NSString *)showString
    {
        return _showString;
    }
    
    // 设置富文本
    @synthesize showAttributedString = _showAttributedString;
    - (void)setShowAttributedString:(NSAttributedString *)showAttributedString
    {
        _showAttributedString     = showAttributedString;
        _textLabel.attributedText = showAttributedString;
    }
    - (NSAttributedString *)showAttributedString
    {
        return _showAttributedString;
    }
    
    // 固定宽度
    @synthesize fixWidth = _fixWidth;
    - (void)setFixWidth:(CGFloat)fixWidth
    {
        _textLabel.frame = CGRectMake(0, 0, fixWidth, 0);
        _fixWidth        = fixWidth;
    }
    - (CGFloat)fixWidth
    {
        return _fixWidth;
    }
    
    // backedView的圆角
    @synthesize cornerRadius = _cornerRadius;
    - (void)setCornerRadius:(CGFloat)cornerRadius
    {
        _cornerRadius = cornerRadius;
        _backedView.layer.cornerRadius = cornerRadius;
    }
    - (CGFloat)cornerRadius
    {
        return _cornerRadius;
    }
    
    #pragma mark - 其他方法
    
    // 计算出文本尺寸
    - (CGRect)calculate
    {
        [_textLabel sizeToFit];
        return _textLabel.bounds;
    }
    
    // 最终计算出尺寸
    - (void)fix
    {
        // 计算出文本的rect值
        CGRect rect       = [self calculate];
        rect.size.height += _gapSize.height;
        rect.size.width  += _gapSize.width;
        _backedView.frame = rect;
        _textLabel.center = _backedView.center;
        
        self.frame        = rect;
    }
    
    @end

    使用时候的代码:(注:里面用到的富文本为本人自己所写的类

    //
    //  RootViewController.m
    //  UILabel
    //
    //  Created by YouXianMing on 14-9-16.
    //  Copyright (c) 2014年 YouXianMing. All rights reserved.
    //
    
    #import "RootViewController.h"
    #import "YXHUD.h"
    #import "ConfigAttributedString.h"
    #import "NSString+YX.h"
    
    @interface RootViewController ()
    
    @end
    
    @implementation RootViewController
    
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        
    
        YXHUD *hud = [YXHUD new];
        hud.fixWidth     = 200;                // 固定Label宽度为100
        hud.gapSize      = CGSizeMake(20, 20); // 间隙宽度为10
        hud.cornerRadius = 5.f;                // 圆角值为5
        
        
        NSString *str = @"Warnning:
    
    YouXianMing NoZuoNoDie";
        NSArray *sets = @[
                          // 全局设置
                          [ConfigAttributedString font:[UIFont systemFontOfSize:10.f]
                                                 range:[str range]],
                          
                          // 局部设置
                          [ConfigAttributedString font:[UIFont fontWithName:@"HelveticaNeue-Thin" size:14.f]
                                                 range:[@"Warnning:" rangeFrom:str]],
                          [ConfigAttributedString foregroundColor:[UIColor yellowColor]
                                                            range:[@"Warnning:" rangeFrom:str]],
                          [ConfigAttributedString foregroundColor:[UIColor redColor]
                                                            range:[@"YouXianMing" rangeFrom:str]]];
        
        
        NSLog(@"%@", [str createAttributedStringAndConfig:sets]);
        hud.showAttributedString = [str createAttributedStringAndConfig:sets];
        [hud fix];
        
        CGRect rect = hud.frame;
        rect.origin.x = 100;
        rect.origin.y = 100;
        hud.frame = rect;
        
        
        [self.view addSubview:hud];
    }
    
    @end

    可以固定位置:

    可以进行复杂的设置:

    可以设置富文本:

    不过还不是完全品......

  • 相关阅读:
    可序列化serializable的作用是什么
    HelloWorld编译正常运行报noclassdeffounderror
    dtd对xml没有起到约束作用
    Ajax发送XML请求案例
    Ajax发送GET和POST请求案例
    Ajax发送简单请求案例
    初识Ajax
    数据库设计
    数据库和实例的区别
    Flask
  • 原文地址:https://www.cnblogs.com/YouXianMing/p/3975774.html
Copyright © 2020-2023  润新知