UI_02 基础视图、程序启动流程

为什么80%的码农都做不了架构师?>>>   hot3.png

⼀、UITextField

UITextField(输⼊框):是控制⽂本输⼊和显⽰的控件

UITextField核⼼功能主要包含3个⽅⾯: ⽂本显⽰ 输⼊控制 外观配置

1、⽂本显⽰

//    textField.text = @"你好";

//    textField.textAlignment = NSTextAlignmentCenter;

    textField.textColor = [UIColor blueColor];

    textField.placeholder = @"请输入我爱编程";

    textField.font = [UIFont fontWithName:@"" size:20];


2、输⼊控制

    textField.enabled = YES;
    textField.
clearsOnBeginEditing = NO;
    textField.
secureTextEntry = YES;
    textField.
keyboardType = UIKeyboardTypeDefault;

    textField.returnKeyType = UIReturnKeyDefault;

//自定义键盘视图
   
UIView * inputView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 180)];
    inputView.
backgroundColor = [UIColor blueColor];
    textField.
inputView = inputView;
    [inputView
release];
//自定义键盘辅助视图
   
UIView * inputAccessaryView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 60)];
    inputAccessaryView.
backgroundColor = [UIColor yellowColor];
    textField.
inputAccessoryView = inputAccessaryView;

    [inputAccessaryView release];


3、外观控制

    textField.borderStyle = UITextBorderStyleRoundedRect;
    textField.
clearButtonMode = UITextFieldViewModeWhileEditing;

    //设置文本框左视图

    UIButton * button = [UIButton buttonWithType:UIButtonTypeCustom];

    button.frame = CGRectMake(0, 0, 40, 40);

    [button setBackgroundImage:[UIImage imageNamed:@"face_monkey_2_24px_541648_easyicon.net.png"] forState:UIControlStateNormal];

    textField.leftView = button;

    textField.leftViewMode = UITextFieldViewModeAlways;



二、UIButton

1、UIButton的状态

normal(普通状态)

默认情况

对应的枚举常量:UIControlStateNormal

highlighted(高亮状态)

按钮被按下去的时候(手指还未松开)

对应的枚举常量:UIControlStateHighlighted

disabled(失效状态,不可用状态)

如果enabled属性为NO,就是处于disable状态,代表按钮不可以被点击

对应的枚举常量:UIControlStateDisabled

UIButton有很多种状态,它提供了一些便捷属性,可以直接获取当前状态下的文字、文字颜色、图片等
@property(nonatomic,readonly,retain) NSString *currentTitle;
@property(nonatomic,readonly,retain) UIColor  *currentTitleColor;
@property(nonatomic,readonly,retain) UIImage  *currentImage;

@property(nonatomic,readonly,retain) UIImage  *currentBackgroundImage;



    UIButton * button = [UIButton buttonWithType:UIButtonTypeSystem];
//    button.backgroundColor = [UIColor blackColor];
    button.
frame = CGRectMake(30, 100, 50, 50);
//    button.layer.cornerRadius = 20;
   
//设置前景图片
    [button
setImage:[UIImage imageNamed:@""] forState:UIControlStateNormal];
   
//设置背景图片
   
//设置普通状态下的背景图片
    [button
setBackgroundImage:[UIImage imageNamed:@"normal.png"] forState:UIControlStateNormal];
   
//设置高亮状态下的背景图片
    [button
setBackgroundImage:[UIImage imageNamed:@"hilighted.png"] forState:UIControlStateHighlighted];
   
//添加事件
    [button
addTarget:self action:@selector(clickButton:) forControlEvents:UIControlEventTouchUpInside];
   
//设置按钮title
    [button
setTitle:@"绿鸟" forState:UIControlStateNormal];
    [button
setTitle:@"蓝鸟" forState:UIControlStateHighlighted];

    [button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];


- (void)clickButton:(UIButton *)button
{
   
self.window.backgroundColor = [UIColor colorWithRed:random()%100/100.0 green:random()%100/100.0 blue:random()%100/100.0 alpha:1];
    button.
backgroundColor = [UIColor whiteColor];

}



三、AppDelegate

****键盘收回****

1、将AppDelegate作为UITextField的delegate

@interface AppDelegate : UIResponder <UIApplicationDelegate, UITextFieldDelegate>

2、AppDelegate.m⽂件实现textFieldShouldReturn:⽅法

- (void)textFieldDidBeginEditing:(UITextField *)textField

{
    [textField
becomeFirstResponder];
   
NSLog(@"%s", __FUNCTION__);

}// became first responder

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{

    NSLog(@"%s", __FUNCTION__);     // 输出方法名

    [textField resignFirstResponder];
   
return YES;

}// called when 'return' key pressed. return NO to ignore.

3、添加代理

    textField.delegate = self;


****触摸键盘外空白区域隐藏键盘****

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

{
   
UITouch *touch = [touches anyObject];
   
   
if (![touch.view isKindOfClass: [UITextField class]] || ![touch.view isKindOfClass: [UITextView class]]) {
       

        [self.window endEditing:YES];       

    }

    [super touchesBegan:touches withEvent:event];

}



四、iOS程序启动流程

1、程序入口

int main(int argc, char * argv[]) {

    @autoreleasepool {

        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }

}


UIApplicationMain剖析:

    argc: argv[].count

    argv[]: 存放的是所有的参数

    principalClassName:如果是nil,UIApplicationMain()函数会给系统创建一个UIApplication这个类的一个对象,而且是唯一的,叫做应用程序对象

    delegateClassName:UIApplicationMain()使用给定类创建代理并给应用程序设置代理

    UIApplicationMain()这个函数,开启事件循环

2、UIApplicationDelegate

UIApplicationDelegate是⼀个OC的协议。⾥⾯声明了⼀堆⽅法,这些⽅ 法都与应⽤程序运⾏状态有关,它们由应⽤程序代理实现。UIApplication 对象负责调⽤。

iOS生命周期:

UIApplicationDelegate

程序启动:

application:didFinishLaunchingWithOptions:

applicationDidBecomeActive:

挂起:

applicationWillResignActive:     (tag:按两下Home键只发送此消息)

applicationDidEnterBackground:

恢复:

applicationWillEnterForeground:

applicationDidBecomeActive:     (tag:从此状态返回程序只发送此消息)

结束:

applicationWillResignActive:   

applicationDidEnterBackground:

AppDelegate applicationWillTerminate:

输出函数名:

    NSLog(@"%s", __FUNCTION__);


转载于:https://my.oschina.net/zooyf/blog/493650

你可能感兴趣的:(UI_02 基础视图、程序启动流程)