澳门威利斯人_威利斯人娱乐「手机版」

来自 澳门威利斯人 2020-05-01 12:57 的文章
当前位置: 澳门威利斯人 > 澳门威利斯人 > 正文

澳门威尼斯人官方网站几个宏设置搞定九宫格布

早前刚开头搞iOS的时候一大半都是经过测算frame来布局视图,搞着搞着貌似都以用自行结构来化解了,因为机关布局实在太方便、太好用了,所以当本身昨天蓦然重播从前代码的时候忽然看见了早前写的九宫格构造,认为超级多东西都忘了,所以几天前专程在此记录一下,而且通过多少个简单的宏定义来完毕构造的须要,具体大家看代码吧,皆有注释 很好懂:

iOS组项目职业

如今手艺部iOS组,项目结构松散,底层混乱,缺少职业,以致公司开荒时代码风格差距一点都不小。为了幸免中期因为代码品质难题的重构,方便项目中期的护卫。特写下此标准,望各位组员在写项指标时候,尽量依照此标准实行编写制定。

澳门威尼斯人官方网站 1

//// ButtonContainerView.h// chemuchao//// Created by 遇见远洋 on 16/3/7.// Copyright © 2016年 zhaoxiaolu. All rights reserved.//#import <UIKit/UIKit.h>//按钮点击blocktypedef void(^spitlotBtnClick)(UIButton * btn);@interface ButtonContainerView : UIView@property (nonatomic,copy)spitlotBtnClick spitlotBlock;/**<<#展示对话内容的tableview#>*/@end

一.框架专门的学业

框架标准依照下图进行逐项批注。

澳门威尼斯人官方网站 2

显示屏快速照相 2017-08-01 早上3.45.57.png

magic.png

此处给大家推荐三个写注释的好法子呢,在声明属性的时候,大家假诺想在其他地点调用那本性情的时候在下方有提醒如图:

1. 项目入口

寄放AppDelegate ,如AppDelegate内容过多,可分四个类公事进行编写制定;如:

澳门威尼斯人官方网站 3

显示器快速照相 2017-08-01 深夜4.00.06.png

LYMagicMacro

js99703金沙娱城 ,你还在一回一回的写过多行代码进行控件的创办,增添,布局么?

您还在二次三次的展开品质的注解么?

小兰法力宏,二个.h文件,清除您的绝半数以上忧虑.

ps:小兰法力宏现今维护中.致力于让体验者忘掉分类,屏绝耦合,加多越来越多更有助于的功用,更轻量级.作者也会修复一些缺欠使她更安全,更有利,更简单.

倘若您意识了怎么着bug或然白玉微瑕,迎接各个邮件纷扰:lanyang0829@163.com

澳门威尼斯人官方网站 4显示器快速照相贰零壹陆-07-26 上午11.42.15.png

2. 项目作用模块

类型供给开采职员编写的代码都主要集聚在这里一块。如图:

澳门威尼斯人官方网站 5

显示屏快速照相 2017-08-01 早晨4.03.41.png

在这里模块下的文书夹,主要以tarbar的标签进行分类。模块下,以MVC情势开展模块的编纂,如:Home(首页State of Qatar,里面分为4个文件夹:controller,model,view,others。

澳门威尼斯人官方网站 6

显示屏快速照相 2017-08-01 清晨4.09.34.png

即:项目或然以思想的MVC方式开张开辟。

功能

立时注解和起头化对象的宏定义.

蝇量级,低耦合,项目仅1个公文,且不需任何分类和正视库.

只须要跟本身在上头评释属性的时候相像 在最终加上

3. 父类模块

学过编制程序的都知道,面向对象的三大特征:世襲性,封装性,多态性。父类模块是为了裁减代码的重复量而存在的。举个轻松的例证,大家在自定义View的时候都时有时无写那样的代码:

- (instancetype)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        [self step];
    }
    return self;
}
- (void)step{
    // 添加自定义view里面的UI组件
}

种种自定义类都亟需再度写这一端代码,特别的难为。那是能够把它写到一个父类上,在进行UIView的自定义的时候,只必要调用- (void)step即可。

事比如下:
(1)创立父类文件,世襲自UIView

澳门威尼斯人官方网站 7

显示器快速照相 2017-08-01 中午4.22.43.png

(2State of Qatar 在ParentView.h 文件宣称- (void)step方法。

#import <UIKit/UIKit.h>

@interface ParentView : UIView
- (void)step;
@end

(3卡塔尔ParentView.m文件代码如下:

#import "ParentView.h"

@implementation ParentView
- (instancetype)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        [self step];
    }
    return self;
}
- (void)step{

}

@end

当供给编写制定自定义UIView的时候,只供给持续自 ParentView,调用 - (void)step措施就能够。代码如下:
(1)HomeHeardView.h的代码:

#import "ParentView.h"
#import "NameModel.h"
@interface HomeHeardView : ParentView
@property(nonatomic,strong)NameModel *nameModel;
@end

(2)HomeHeardView.m的代码:

#import "HomeHeardView.h"

@interface HomeHeardView()
@property(nonatomic,strong)UILabel *nameLabel;
@end

@implementation HomeHeardView
-(void)step{
    self.nameLabel = [UILabel new];
    self.nameLabel.backgroundColor = [UIColor redColor];
    self.nameLabel.textColor = [UIColor colorWithHexString:@"#4a4a4a"];
    [self addSubview:self.nameLabel];
    [self.nameLabel mas_makeConstraints:^(MASConstraintMaker *make) {
        make.center.equalTo(self);
        make.size.mas_equalTo(CGSizeMake(300, 100));
    }];
}
-(void)setNameModel:(NameModel *)nameModel{
    self.nameLabel.text = nameModel.name;
}
@end

能够看到,笔者不再供给重写- (instancetype)initWithFrame:(CGRect)frame方法。

集成

将LYMagicMacro.h拖入文件,pch中程导弹入就可以

#import "LYMagicMacro.h"
/**<这是要写的提示文字*/

4.管理模块

管住模块正是用来管理项目全局的设置和劳务的,如:IM谈心部分的配备登陆踢出管理,客户的记名登出的保管,平日都以单例来拓宽贯彻。
管制模块在那时候此刻开垦的享见乐讯花色中,并从未反映出来,不过本人在类型中有写过,使用单例情势写的UserData类。此类主假如用来对客户的管制。所以项目中的此类应该命名字为UserManager澳门威尼斯人官方网站,才合适。

运用方法

采纳这种办法宣示的习性,在外头调用的时候就能够有提醒,好像跑题了,接下去点M的代码吧:

5.全局宏定义模块

存放全数宏定义的文件,在这,提出全体的宏定义模块依然遵照,分裂的门类,编写在分化的公文当中。
如:对url的宏定义单独放在UrlMacro.h文件中。对有的第三方要求到的key的宏定义单独放在KeyMacro.h文件中。

宣称属性

// 声明普通字典
Dictionary_(dataDict)
// 声明可变字典
mDictionary_(dataDictM)
// 声明button
Button_(addBtn)
// 声明label
Label_(nameLabel)
// 声明自定义对象
DIYObj_(Person, p)
// 声明tableView
TableView_(mainTableView)
// 声明collectionViewFlowLayout
FlowLayout_(mainFlowLayout)
// 声明collectionView
CollectionView_(mainCollectionView)
// 还有其他....
//// ButtonContainerView.m// chemuchao//// Created by 遇见远洋 on 16/3/7.// Copyright © 2016年 zhaoxiaolu. All rights reserved.//#import "ButtonContainerView.h"#import "UIView Extension.h"//状态栏高度#define kStateHeight 20//总行数#define kRows 2//总列数#define kCols 4//九宫格个数#define kCount 8//九宫格之间的间隙#define kMargin 5//字体大小#define kFont15 [UIFont systemFontOfSize:15]@interface ButtonContainerView ()@property (nonatomic,strong)NSMutableArray * btns;@property (nonatomic,strong)NSArray * btnTitles;@end@implementation ButtonContainerView- (NSMutableArray *)btns{ if  { _btns = [NSMutableArray array]; } return _btns;}-(NSArray *)btnTitles { if (!_btnTitles) { _btnTitles = @[@"堵成狗",@"堵成翔",@"路太窄",@"没灯",@"路不平",@"积水多",@"颠簸",@"路太脏"]; } return _btnTitles;}- (instancetype)initWithFrame:frame{ if (self = [super initWithFrame:frame]) { [self setupUI]; } return self;}- setupUI { for (int i = 0; i < kCount; i  ) { UIButton * btn = [[UIButton alloc]init]; [btn setTitle:self.btnTitles[i] forState:UIControlStateNormal]; [self addSubview:btn]; btn.layer.borderWidth = 1; btn.layer.borderColor = [UIColor redColor].CGColor; btn.titleLabel.font = [UIFont systemFontOfSize:13]; [btn setTitleColor:[UIColor grayColor] forState:UIControlStateNormal]; [btn addTarget:self action:@selector(spitlotBtnClick:) forControlEvents:UIControlEventTouchUpInside]; [self.btns addObject:btn]; }}-layoutSubviews { [super layoutSubviews]; [self.btns enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { UIButton * btn = obj; btn.tag = idx; //行号 NSUInteger row = idx/kCols; //列号 NSUInteger col = idx%kCols; CGFloat btnW = (self.width - kMargin*(kCols   1))/kCols; CGFloat btnH = (self.height - kMargin*(kRows   1))/kRows -10; CGFloat btnX = kMargin   col*(kMargin   btnW); CGFloat btnY = kMargin   row*(kMargin   btnH)   kStateHeight; btn.frame = CGRectMake(btnX, btnY, btnW, btnH); }];}#pragma mark 按钮点击事件- spitlotBtnClick:(UIButton *)sender { NSAssert(self.spitlotBlock != nil, @"传入的block不能为空"); //执行block self.spitlotBlock;}@end

6.第三方模块

寄放全体的第三方库(本身手动导入的卡塔尔国以致对自身第三方库的包裹的类。如享见乐讯项目标:TheAFNetWorking 类,YXPMBProgressView 类都得以放在那文件夹下。

习认为常伊始化对象

// 不使用懒加载,创建可变数组并添加属性
NSMutableArray *arrayM = NEW_Class_(NSMutableArray,
                            [obj addObject:@"value1"];
                            [obj addObject:@"value2"];
                            NSLog(@"%@",obj)
                            )
// 创建普通数组
NSArray *array = NEW_Class_(NSArray,
                    obj = arrayM.copy;
                    )

本文由澳门威利斯人发布于澳门威利斯人,转载请注明出处:澳门威尼斯人官方网站几个宏设置搞定九宫格布

关键词: 澳门威利斯人 日记本 几个 布局 九宫格