其次篇教程此前写了50%,开发框架入门开发教程1

第二篇教程之前写了一半,第二篇教程之前写了一半

Sagit 框架原精晓说:

前言:

开赛相比不难:Sagit.Framework For IOS
开发框架入门开发教程1:框架下载与环境安顿

第2篇教程从前写了大体上,感觉不太好写,而且内容无非介绍API,要说的很多,又枯燥乏味。

由此那半篇小说就放下了。

新兴又起头盘算那教程该怎么写,经过几天的沉淀,终于有了贰个说了算:

以此科目,就用IT恋里的实例来和大伙儿分享了,看看在实战是怎么被利用的。

那篇小说分两有的,后边讲实战的使用,前面补充框架设计原理,及未来考虑的增加等。

1:首先,我们要有N张率领页的图形

图片 1

IT恋里就放有3张了,如下(那里图片把翻页的功效一向带上了,大家就省点事了):

图片 2图片 3图片 4

总结:

这么些天一贯在立异框架,相信随着框架的不断完善,可以让大伙编写IOS代码时,变的无拘无缚很多!!!

下一篇,大家以跳转到登陆注册教导页为示例,继续下一篇教程。 

最终,多谢咱们对Sagit框架和自己IT连创业安排的关怀!

3:事件的触发

AddScrollView只是增添了图片,并可以滑动,但我们需求对最终一张图纸增添点击事件:

由此要求先得到最后一张图片,框架对UIView扩充了多少个属性:

-(UIView*)lastSubView;
-(UIView*)firstSubView;
-(UIView*)preView;
-(UIView*)nextView;

用来方便得到子视图的率先个和终极二个,以及本人同级的上1个和下一个。

紧接着,是对这么些UIView,追加点击事件。

框架对于UIView增添了二种点击事件的绑定格局:

#pragma mark 扩展系统事件
-(UIView*)click:(NSString*)event;
- (UIView*)addClick:(onClick)block;

click用于指定二个轩然大波的名目,addClick用于追加二个事件实施的代码块。

那里先讲click传的event名字的物色事件的流水线:

1:先找传进来的event在所在的Controller中是否有对应的事件,若有,执行,若没有继续以下:

2:对event追加后缀变成eventClick和eventClick:再看有没有对应的事件,若有,执行,若没有继续以下:

3:对event追加后缀变成EventController,看有没有对应的控制器,若有,执行默认的open:事件跳转,若没有,则无绑定事件。

OK,原理教学到此地,大伙再重蹈覆辙一下那行代码:

[[self.view addScrollView:nil direction:X imgName:@"welcome_1", @"welcome_2", @"welcome_3", nil].lastSubView click:name];

2:UIView的AddUI相关的办法。

框架扩大了UIView,增了常用了组件方法,并对那个零部件,举行了些出格的处理:

-(void)addView:(UIView *)view name:(NSString*)name;
-(UIView*)addUIView:(NSString*)name;
-(UIButton*)addSwitch:(NSString*)name;
-(UIButton *)addStepper:(NSString *)name;
-(UIButton *)addSlider:(NSString *)name;
-(UIButton *)addProgress:(NSString *)name;

-(UILabel*)addLabel:(NSString*)name;
-(UILabel*)addLabel:(NSString*)name text:(NSString*)text;
-(UILabel*)addLabel:(NSString*)name text:(NSString*)text font:(NSInteger)px;
-(UIImageView*)addImageView:(NSString*)name;
-(UIImageView*)addImageView:(NSString*)name imgName:(NSString*)imgName;
-(UIImageView*)addImageView:(NSString*)name imgName:(NSString*)imgName xyFlag:(XYFlag)xyFlag;

-(UITextField*)addTextField:(NSString*)name;
-(UITextField*)addTextField:(NSString*)name placeholder:(NSString*)placeholder;
-(UITextView*)addTextView:(NSString*)name;

-(UIButton*)addButton:(NSString*)name;
-(UIButton*)addButton:(NSString*)name imgName:(NSString*)imgName;
-(UIButton*)addButton:(NSString*)name imgName:(NSString*)imgName buttonType:(UIButtonType)buttonType;
-(UIButton*)addButton:(NSString*)name title:(NSString*)title;
-(UIButton*)addButton:(NSString*)name title:(NSString*)title font:(NSInteger)px;
-(UIButton*)addButton:(NSString*)name title:(NSString*)title font:(NSInteger)px buttonType:(UIButtonType)buttonType;
-(UIButton*)addButton:(NSString*)name title:(NSString*)title font:(NSInteger)px imgName:(NSString*)imgName buttonType:(UIButtonType)buttonType;
-(UIView*)addLine:name color:(id)colorOrHex;
-(UIScrollView*)addScrollView:(NSString*)name;
-(UIScrollView *)addScrollView:(NSString*)name direction:(XYFlag)direction imgName:(NSString*)imgName,...NS_REQUIRES_NIL_TERMINATION;

些微组件近年来还没涉及,后续遵照项目情况大概会扩展或更为优化。

那边先讲一下addScrollView的功底用法:

-(UIScrollView *)addScrollView:(NSString*)name direction:(XYFlag)direction imgName:(NSString*)imgName,...NS_REQUIRES_NIL_TERMINATION;

基本讲解:

1:每个UI都有个name属性,这个name很核心,可以关联事件,用于寻找UI,也用于对UI取值赋值,如果实在没用到,可以赋nil。

2:XYFlag 指求滑动是左右的X,还是上下的Y。

3:可以指定一个可追加的图片名称,用于加载图片(内部加载时,会自动根据数据调整ScrollView和图片的宽高等属性)。

4:对于一个add的UIView,没指定xy宽高时,会自动继承上一个相对视图的frame属性,这里是继承父视图,全屏了。

 

1:Controller加载View的原理:

在往上看的第三张图中,注意细节:

A:可以看到引导欢迎界面,只有一个WelcomeController,木有WelcomeView。

B:而引导注册界面,有和StartController对应的StartView。

本条作用是作者那两日增多的,紧假设考虑到当View里的代码极少时,节省文件的同时,也更简明。

故而,近日Controller检测加载View的流水线是:

@implementation STController

- (void)viewDidLoad {
    [super viewDidLoad];//获取当前的类名
    NSString* className= NSStringFromClass([self class]);
    NSString* viewClassName=[className replace:@"Controller" with:@"View"];
    Class viewClass=NSClassFromString(viewClassName);
    if(viewClass!=nil)//view
    {
        self.view=self.stView=[[viewClass alloc] initWithController:self];
        [self.stView initView];
    }
    else
    {
        self.view=[[STView alloc] initWithController:self];//将view换成STView
        [self initUI];
    }
}
//空方法(保留给子类复盖)
-(void)initUI{}

代码读下去是这么的:

1: 如果XXXController检测到存在XXXView,则进行加载,并调用其initView方法(里面会再调用initUI方法)

--所以框架的默认加载的约定的是XXX名字前缀一样,就会被加载。

2: 如果检测不存在,则调用自身的initUI方法(这就是这里单独一个WelcomeController存在的原因)。

 

Sagit 达成因势利导页成效:

2:UIView的AddUI相关的办法。

框架扩张了UIView,增了常用了组件方法,并对那一个零部件,进行了些新鲜的拍卖:

-(void)addView:(UIView *)view name:(NSString*)name;
-(UIView*)addUIView:(NSString*)name;
-(UIButton*)addSwitch:(NSString*)name;
-(UIButton *)addStepper:(NSString *)name;
-(UIButton *)addSlider:(NSString *)name;
-(UIButton *)addProgress:(NSString *)name;

-(UILabel*)addLabel:(NSString*)name;
-(UILabel*)addLabel:(NSString*)name text:(NSString*)text;
-(UILabel*)addLabel:(NSString*)name text:(NSString*)text font:(NSInteger)px;
-(UIImageView*)addImageView:(NSString*)name;
-(UIImageView*)addImageView:(NSString*)name imgName:(NSString*)imgName;
-(UIImageView*)addImageView:(NSString*)name imgName:(NSString*)imgName xyFlag:(XYFlag)xyFlag;

-(UITextField*)addTextField:(NSString*)name;
-(UITextField*)addTextField:(NSString*)name placeholder:(NSString*)placeholder;
-(UITextView*)addTextView:(NSString*)name;

-(UIButton*)addButton:(NSString*)name;
-(UIButton*)addButton:(NSString*)name imgName:(NSString*)imgName;
-(UIButton*)addButton:(NSString*)name imgName:(NSString*)imgName buttonType:(UIButtonType)buttonType;
-(UIButton*)addButton:(NSString*)name title:(NSString*)title;
-(UIButton*)addButton:(NSString*)name title:(NSString*)title font:(NSInteger)px;
-(UIButton*)addButton:(NSString*)name title:(NSString*)title font:(NSInteger)px buttonType:(UIButtonType)buttonType;
-(UIButton*)addButton:(NSString*)name title:(NSString*)title font:(NSInteger)px imgName:(NSString*)imgName buttonType:(UIButtonType)buttonType;
-(UIView*)addLine:name color:(id)colorOrHex;
-(UIScrollView*)addScrollView:(NSString*)name;
-(UIScrollView *)addScrollView:(NSString*)name direction:(XYFlag)direction imgName:(NSString*)imgName,...NS_REQUIRES_NIL_TERMINATION;

有点组件方今还没提到,后续依照项目情况恐怕会追加或更为优化。

此处先讲一下addScrollView的根基用法:

-(UIScrollView *)addScrollView:(NSString*)name direction:(XYFlag)direction imgName:(NSString*)imgName,...NS_REQUIRES_NIL_TERMINATION;

大旨讲解:

1:每个UI都有个name属性,这个name很核心,可以关联事件,用于寻找UI,也用于对UI取值赋值,如果实在没用到,可以赋nil。

2:XYFlag 指求滑动是左右的X,还是上下的Y。

3:可以指定一个可追加的图片名称,用于加载图片(内部加载时,会自动根据数据调整ScrollView和图片的宽高等属性)。

4:对于一个add的UIView,没指定xy宽高时,会自动继承上一个相对视图的frame属性,这里是继承父视图,全屏了。

 

2:然后,逻辑与代码:

逻辑流程:

AppDelegate运维时=》检测一旦是首先次开行App=》WelcomeController(欢迎指点页)

if([ITGlobal share].IsFirstRun)
    {
        //欢迎界面
        self.window.rootViewController = [WelcomeController new];
    }
    else if (launchOptions) {}

滑动突显三张图纸之后,最终一张触发点击事件,依据标准进入以下界面:

A:(更新App时)存在Token,跳转到:MainController(主界面)

B:(第一次时)无Token时,跳转到:StartController(登陆注册引导界面)

图片 5

下一场就是主导的一条龙代码完结效益了,一切都来的如此容易轻松:

[[self.view addScrollView:nil direction:X imgName:@"welcome_1", @"welcome_2", @"welcome_3", nil].lastSubView click:name];

追加一张效果图:

图片 6

3:事件的触及

AddScrollView只是增多了图片,并可以滑动,但大家需要对最终一张图纸扩展点击事件:

所以要求先得到最终一张图纸,框架对UIView扩张了七个天性:

-(UIView*)lastSubView;
-(UIView*)firstSubView;
-(UIView*)preView;
-(UIView*)nextView;

用于方便得到子视图的率先个和尾声贰个,以及和谐同级的上三个和下二个。

继而,是对那一个UIView,追加点击事件。

框架对于UIView增添了三种点击事件的绑定格局:

#pragma mark 扩展系统事件
-(UIView*)click:(NSString*)event;
- (UIView*)addClick:(onClick)block;

click用于指定3个风云的称谓,addClick用于追加2个轩然大波实施的代码块。

此处先讲click传的event名字的查找事件的流程:

1:先找传进来的event在所在的Controller中是否有对应的事件,若有,执行,若没有继续以下:

2:对event追加后缀变成eventClick和eventClick:再看有没有对应的事件,若有,执行,若没有继续以下:

3:对event追加后缀变成EventController,看有没有对应的控制器,若有,执行默认的open:事件跳转,若没有,则无绑定事件。

OK,原理教学到此地,大伙再重复一下那行代码:

[[self.view addScrollView:nil direction:X imgName:@"welcome_1", @"welcome_2", @"welcome_3", nil].lastSubView click:name];

前言:

开业比较简单:Sagit.Framework For IOS
开发框架入门开发教程1:框架下载与环境陈设

第叁篇教程从前写了大体上,感觉不太好写,而且内容唯有介绍API,要说的很多,又枯燥乏味。

因而这半篇小说就放下了。

新兴又初叶商量那教程该怎么写,经过几天的沉淀,终于有了1个决定:

本条课程,就用IT恋里的实例来和大伙儿分享了,看看在实战是怎么被选用的。

那篇文章分两片段,前边讲实战的应用,后边补充框架设计原理,及前景设想的恢弘等。

充实一张效果图:

图片 7

2:然后,逻辑与代码:

逻辑流程:

AppDelegate运营时=》检测一旦是率先次开行App=》WelcomeController(欢迎指点页)

if([ITGlobal share].IsFirstRun)
    {
        //欢迎界面
        self.window.rootViewController = [WelcomeController new];
    }
    else if (launchOptions) {}

滑动突显三张图纸之后,最终一张触发点击事件,依据标准进入以下界面:

A:(更新App时)存在Token,跳转到:MainController(主界面)

B:(第一次时)无Token时,跳转到:StartController(登陆注册引导界面)

图片 8

下一场就是基本的一行代码落成效益了,一切都来的如此简单轻松:

[[self.view addScrollView:nil direction:X imgName:@"welcome_1", @"welcome_2", @"welcome_3", nil].lastSubView click:name];

Sagit 框架原理演说:

总结:

那一个天平素在改良框架,相信随着框架的不断完善,可以让大家编写IOS代码时,变的轻松很多!!!

下一篇,我们以跳转到登陆注册辅导页为示例,继续下一篇教程。 

最后,多谢大伙儿对Sagit框架和自我IT连创业小项目标钟情!

1:首先,我们要有N张教导页的图纸

图片 9

IT恋里就放有3张了,如下(那里图片把翻页的作用一直带上了,大家就省点事了):

图片 10图片 11图片 12

Sagit 落成因势利导页功用:

1:Controller加载View的原理:

在往上看的第三,张图中,注意细节:

A:可以看到引导欢迎界面,只有一个WelcomeController,木有WelcomeView。

B:而引导注册界面,有和StartController对应的StartView。

本条意义是本人那二日增多的,重如若考虑到当View里的代码极少时,节省文件的同时,也更简单。

据此,近日Controller检测加载View的流水线是:

@implementation STController

- (void)viewDidLoad {
    [super viewDidLoad];//获取当前的类名
    NSString* className= NSStringFromClass([self class]);
    NSString* viewClassName=[className replace:@"Controller" with:@"View"];
    Class viewClass=NSClassFromString(viewClassName);
    if(viewClass!=nil)//view
    {
        self.view=self.stView=[[viewClass alloc] initWithController:self];
        [self.stView initView];
    }
    else
    {
        self.view=[[STView alloc] initWithController:self];//将view换成STView
        [self initUI];
    }
}
//空方法(保留给子类复盖)
-(void)initUI{}

代码读下去是那样的:

1: 如果XXXController检测到存在XXXView,则进行加载,并调用其initView方法(里面会再调用initUI方法)

--所以框架的默认加载的约定的是XXX名字前缀一样,就会被加载。

2: 如果检测不存在,则调用自身的initUI方法(这就是这里单独一个WelcomeController存在的原因)。