RXExtenstion 0.0.0.2

RXExtenstion 0.0.0.2

Maintained by srxboys.



RXExtenstion 0.0.0.2

  • By
  • srxboys

RXExtenstion

Platform Language Language_swift Language_C License
图片来源: http://shields.io

  • 基于 >= iOS7

Wiki


iOS 项目基本框架

1、简易的MVC框架;

2、主要是扩展方法,方便开发;

3、避免常见的bug。


带有效果展示

1、UILabel自适应高度的3种方法

    //label高度
    CGFloat _textHeight = 0;

    //第一种 -- 可以得到宽高 -- 前提一个无线大
    //不能对富文本赋值后的计算
    _textHeight = [label textRectForBounds:frame limitedToNumberOfLines:1].size.height;

    //第二种 -- 可以得到宽高
    //1)确定行数,进行剪切
    //2)不确定行数,宽高一个无限大,进行剪切
    [label sizeToFit];
    _textHeight = label.frame.size.height;
    _textWidth = label.frame.size.width;

    //第三种 对于特殊文字、字符,计算的结果并不满人意
    CGFloat width = 200;//当宽度是已知的。
    _textHeight = [label boundingRectWithSize:CGSizeMake(width, CGFLOAT_MAX) 
                  options:NSStringDrawingUsesLineFragmentOrigin |NSStringDrawingUsesFontLeading
                  attributes: @{NSFontAttributeName: label.font} 
                  context:nil].size.height;

1、看看效果

srxboys srxboys srxboys


2、封装AFNetworking


3、自定义点餐的菜单功能

###只是简简单单的框架 srxboys

这里我只是做了个框架,具体的界面美化和数据等等根据需求自己完善。而这个框架主要提供思路。


4、封装假数据

上面的不知道你观察了没有,很多文字、日期 + 时间、数字、图片等等 都是来自于 自动生成假数据 的类。下面介绍下:

    @interface RXRandom : NSObject
    /// 随机日期-最近一个月随机 
    + (NSString *)randomDateString;
    /// 随机日期---- 几个月随机
    + (NSString *)randomDateStringWithinCount:(NSInteger)count;
    ///可以返回最近30天,最近几个小时等等操作,需要改内部

    /// 随机汉字--100 以内
    + (NSString *)randomChinas;
    /// 随机汉字--count 以内
    + (NSString *)randomChinasWithinCount:(NSInteger)count;
    /// 字符串 -- 不定长
    + (NSString *)randomString;
    /// 随机字母 - 26个
    + (NSString *)randomLetter;
    + (NSString *)randomLetterWithInCount:(NSInteger)count;
    /// 随机 给出 图片网址
    + (NSString *) randomImageURL;
    /// 随机颜色
    + (UIColor *)randomColor;
    /// 返回当前日期时间
    + (double)randomNowDate;
    /// 随机倒计时日期时间 (前提是大于当前时间)
    + (NSString *)randomTimeCountdown;
    @end

srxboys


5、字符处理 、数组、 字典 -> 空处理

    #import "RXCharacter.h"
    @implementation RXCaCheController
        - (void)viewDidLoad {
            [super viewDidLoad];

            NSString * string = @"https://github.com/srxboys";

            if(StrBool(string)) {
                //是否为字符串
            }

            if(UrlBool(string)) {
                //是否为 网址
            }

            if(ArrBool(string)) {
                //是否为 数组
            }

            //参数 空处理
            string = @"0"; // or --> string = @"<null>"
            NSString * dictionaryValue = [string strNotEmptyValue];
            RXLog(@"dictValue=%@", dictionaryValue);
        }
    @end

6、收货地址 地区 选择样式

//导入封装的UIView
#import "RXOneLinkageTreeAddress.h"
#import "RXThreeLinkageAddress.h"
#import "RXJDAddressPickerView.h"

//初始化 并 实现block回调方法
    weak(weakSelf);

    _onePicker = [[RXOneLinkageTreeAddress alloc] init];
    _onePicker.isShow = ^ (BOOL isShow, NSString *address, 
                        NSString * addressCode){
            RXLog(@"_onePicker\nisShow=%@, address=%@, 
                        addressCode=%@\n\n", isShow ? @"" : @"否`", 
                        address, addressCode);

            weakSelf.addressLabel.text = [NSString stringWithFormat:
                        @"_onePicker isShow=%@, address=%@, addressCode=%@", 
                        isShow ? @"" : @"否`", address, addressCode];
    };


    _twoPicker = [[RXThreeLinkageAddress alloc] init];
    _twoPicker.isShow = ^ (BOOL isShow, NSString *address, 
                            NSString * addressCode){
            RXLog(@"_twoPicker\nisShow=%@, address=%@, 
                        addressCode=%@\n\n", isShow ? @"" : @"",
                        address, addressCode);

            weakSelf.addressLabel.text = [NSString stringWithFormat:
                        @"_twoPicker  isShow=%@, address=%@, addressCode=%@",
                        isShow ? @"" : @"", address, addressCode];

    };


    _threePicker = [[RXJDAddressPickerView alloc] init];
    _threePicker.completion = ^(NSString *address,
                                NSString * addressCode){
            RXLog(@"_threePicker\n, address=%@, addressCode=%@\n\n", address, addressCode);

            weakSelf.addressLabel.text = [NSString stringWithFormat:@"_threePicker , 
                        address=%@, addressCode=%@",address, addressCode];
    };

    // -- 我的项目 是把 这些 添加 appDelegate.window 上 --


//调用 收货地址 选择 省/市/区 显示控件
    // 1级 3联动
    [_onePicker showAddressView];

    // 3级联动
    [_twoPicker show];

    //仿照京东v1.5.0
    [_threePicker showAddress];

srxboys


7、日期、时间 选择样式

    _nomalDatePicker  = [[RXNomalDatePicker alloc] init];
    _nomalDatePicker.isShow = ^(BOOL isShow, NSDate * date) {
        RXLog(@"%d %@", isShow, date);
        weakSelf.resultLabel.text = [NSString stringWithFormat:@"%@", date];
    };

    _datePicker = [[RXDatePicker alloc] init];
    _datePicker.isShow = ^(BOOL isShow, NSDate * date) {
        RXLog(@"%d %@", isShow, date);
        weakSelf.resultLabel.text = [NSString stringWithFormat:@"%@", date];
    };

    _dateTimePicker = [[RXDateTimePicker alloc] init];
    _dateTimePicker.pickerComple = ^(BOOL isShow, NSString * dateString) {
        RXLog(@"%d %@", isShow, dateString);
        weakSelf.resultLabel.text = dateString;
    };


    [self.view addSubview:_nomalDatePicker];
    [self.view addSubview:_datePicker];
    [self.view addSubview:_dateTimePicker];

//调用 日期、时间 选择样式 显示控件
    [_nomalDatePicker show];
    [_datePicker show];
    [_dateTimePicker showDatePickerView];

srxboys


8、3D Touch 自定制

srxboys


我的demo 百度网盘

不是技术的技术博客


接口必传字段处理

srxboys

RXLog

srxboys_rxlog

更新日志 -> WIKI

~ ~ ~ coding ~ ~ ~

此项目主要是以框架为主,方法为辅。方便开发。 如果你有想说的可以 issues I
如果你有更好的改进,please pull reqeust me
😅😅😅😅😅