慕課網_《iOS基礎教程之界面初體驗》學習總結

2017年05月15日星期一
說明:本文部份內容均來自慕課網。@慕課網:http://www.imooc.com
教學示例源碼:無
我的學習源碼:https://github.com/zccodere/s...php

第一章:大V有話說

1-1 各類叨嘮

什麼是MVCcss

Model
View
Controller
MVC是一種設計模式
MVC不只是設計模式,更是高於框架和設計模式的
MVC是一種思想

MVC優勢html

低耦合性
高重用性
低開發成本
高可維護性

第二章:UIWindow-界面來了

2-1 UIWindow-1

UIWindow1前端

咱們的手機界面
UIWindow實例化
UIWindow的級別

2-1 UIWindow-2

window的做用html5

做爲一個大容器,包含不少子view
能夠轉遞觸摸消息到控件

代碼演示:ios

// 實例化window
_window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// 給window設置背景顏色
_window.backgroundColor = [UIColor redColor];
// 指定viewcontroller
_window.rootViewController = [[UIViewController alloc] init];
// 成爲主window
[_window makeKeyAndVisible];

第三章:UIView-全部控件的載體

3-1 UIView-1

UIViewcss3

UI的基類,基礎
UIVew的屬性
UIView的方法
UIView的自適應

代碼演示:git

// 建立視圖
UIView *view1 = [[UIView alloc] init];
// 設置邊框-位置大小
view1.frame = CGRectMake(10, 30, 394, 696);
// 背景顏色
view1.backgroundColor = [UIColor redColor];
// 將視圖加入到父視圖中
[self.view addSubview:view1];

3-2 UIView-2

視圖frame屬性github

x:距左上角的水平距離
y:距左上角的垂直距離
width:寬度
height:高度

代碼演示:web

/*
 機型  屏幕尺寸 分辨率 倍率  圖片分辨率
 3GS  3.5寸 320*480 @1x
 4/4s 3.5寸 320*480 @2x 640*960
 5/5c/5s 4.0寸 320*568 @2x 640*1136
 6    4.7寸 375*667 @2x 750*1334
 6plus 5.5寸 414*736 @3x 1242*2208
 
 */

// 3-2
// 獲取當前屏幕

int width = [[UIScreen mainScreen] bounds].size.width;
int height = [[UIScreen mainScreen] bounds].size.height;
NSLog(@"width:%d height:%d",width,height);

3-3 UIView-3

代碼演示:

// 狀態欄高度爲20px,咱們在設置控件frame時須要讓出20px。
NSLog(@"x:%f y:%f w:%f h:%f",view1.frame.origin.x,view1.frame.origin.y,view1.frame.size.width,view1.frame.size.height);

// bounds 邊框大小,x和y永遠爲0
NSLog(@"x:%f y:%f w:%f h:%f",view1.bounds.origin.x,view1.bounds.origin.y,view1.bounds.size.width,view1.bounds.size.height);

// center 中心點
NSLog(@"x:%f y:%f",view1.center.x,view1.center.y);

3-4 UIView-4

代碼演示:

// 父視圖
UIView *superView = view1.superview;
superView.backgroundColor = [UIColor greenColor];
// 座標是根據父視圖的位置來設置的,不會垮層
UIView *view2 = [[UIView alloc] init];
view2.frame = CGRectMake(10, 100, 300, 30);
view2.backgroundColor = [UIColor blackColor];
// 視圖惟一標識
view2.tag = 2;
[view1 addSubview:view2];

UIView *view3 = [[UIView alloc] init];
view3.frame = CGRectMake(20, 50, 100, 100);
view3.backgroundColor = [UIColor purpleColor];
// 視圖惟一標識
view3.tag = 3;
[view1 addSubview:view3];

// 子視圖
// 方式一:獲取所有子視圖
NSArray *subViewArray = view1.subviews;
for (UIView *viewTemp in subViewArray) {
    
    if(viewTemp.tag == 2){
        viewTemp.backgroundColor = [UIColor whiteColor];
    }
}

// 方式二:經過tag值獲取對應的子視圖
UIView *subView = [view1 viewWithTag:3];
subView.backgroundColor = [UIColor orangeColor];

3-5 UIView-5

層級的處理

1.同一個父視圖中先加入的View會被蓋在下面
2.子視圖是跟隨父視圖進行層級遮擋,若是父視圖低於其它同級視圖,則父視圖的子視圖也會被蓋住,可是子視圖和其它視圖的子視圖是沒有關係的
3.交換兩個層的視圖時須要注意必須填寫正確的層級數
4.當層交換了以後對應子視圖的數組下標也會進行改變

代碼演示:

// 層級的處理
/* 
 1.同一個父視圖中先加入的View會被蓋在下面
 2.子視圖是跟隨父視圖進行層級遮擋,若是父視圖低於其它同級視圖,則父視圖的子視圖也會被蓋住,可是子視圖和其它視圖的子視圖是沒有關係的
 3.交換兩個層的視圖時須要注意必須填寫正確的層級數
 4.當層交換了以後對應子視圖的數組下標也會進行改變
 */

UIView *view4 = [[UIView alloc] init];
view4.frame = CGRectMake(10, 100, 300, 300);
view4.backgroundColor = [UIColor yellowColor];
//[self.view addSubview:view4];

// 交換兩個層的視圖
[view1 exchangeSubviewAtIndex:0 withSubviewAtIndex:1];
// 插入一個視圖到指定層
UIView *view5 = [[UIView alloc] init];
view5.frame = CGRectMake(7, 80, 200, 200);
view5.backgroundColor = [UIColor blackColor];
//[view1 insertSubview:view5 atIndex:2];//插入一個視圖到指定層
//[view1 insertSubview:view5 aboveSubview:view3];//插入一個視圖到指定視圖的上面
[view1 insertSubview:view5 belowSubview:view2];//插入一個視圖到指定視圖的下面
// 將一個View放入最頂層或者最底層
// 最頂層
[view1 bringSubviewToFront:view3];
// 最底層
[view1 sendSubviewToBack:view3];

3-6 UIView-6

代碼演示:

// 自適應
UIView *backView = [[UIView alloc] init];
backView.frame = CGRectMake([UIScreen mainScreen].bounds.size.width/2-25, 400, 50, 50);
// 准許子視圖自適應
backView.autoresizesSubviews = YES;
backView.tag = 1001;
backView.backgroundColor = [UIColor orangeColor];
[self.view addSubview:backView];

UIView *topView = [[UIView alloc] init];
topView.frame = CGRectMake(10, 10, 30, 30);
topView.backgroundColor = [UIColor greenColor];
// 設置子視圖的適應方式
topView.autoresizingMask =
//        UIViewAutoresizingFlexibleRightMargin |
//        UIViewAutoresizingFlexibleLeftMargin |
//        UIViewAutoresizingFlexibleTopMargin |
//        UIViewAutoresizingFlexibleBottomMargin |
    UIViewAutoresizingFlexibleWidth |
    UIViewAutoresizingFlexibleHeight;
[backView addSubview:topView];

UIButton *btn = [UIButton buttonWithType:UIButtonTypeSystem];
btn.frame = CGRectMake(10, 550, 355, 30);
btn.backgroundColor = [UIColor blackColor];
[btn addTarget:self action:@selector(bntClick) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn];

本章完整代碼:

//
//  ViewController.m
//  UIView
//
//  Created by zc on 2017/5/15.
//  Copyright © 2017年 com.zccoder. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    // 3-1
    // 建立視圖
    UIView *view1 = [[UIView alloc] init];
    // 設置邊框-位置大小
    view1.frame = CGRectMake(10, 30, 394, 696);
    // 背景顏色
    view1.backgroundColor = [UIColor redColor];
    // 將視圖加入到父視圖中
    [self.view addSubview:view1];
    
    /*
     機型  屏幕尺寸 分辨率 倍率  圖片分辨率
     3GS  3.5寸 320*480 @1x
     4/4s 3.5寸 320*480 @2x 640*960
     5/5c/5s 4.0寸 320*568 @2x 640*1136
     6    4.7寸 375*667 @2x 750*1334
     6plus 5.5寸 414*736 @3x 1242*2208
     
     */
    
    // 3-2
    // 獲取當前屏幕
    
    int width = [[UIScreen mainScreen] bounds].size.width;
    int height = [[UIScreen mainScreen] bounds].size.height;
    NSLog(@"width:%d height:%d",width,height);
    
    // 3-3
    // 狀態欄高度爲20px,咱們在設置控件frame時須要讓出20px。
    NSLog(@"x:%f y:%f w:%f h:%f",view1.frame.origin.x,view1.frame.origin.y,view1.frame.size.width,view1.frame.size.height);
    
    // bounds 邊框大小,x和y永遠爲0
    NSLog(@"x:%f y:%f w:%f h:%f",view1.bounds.origin.x,view1.bounds.origin.y,view1.bounds.size.width,view1.bounds.size.height);
    
    // center 中心點
    NSLog(@"x:%f y:%f",view1.center.x,view1.center.y);
    
    // 3-4
    // 父視圖
    UIView *superView = view1.superview;
    superView.backgroundColor = [UIColor greenColor];
    // 座標是根據父視圖的位置來設置的,不會垮層
    UIView *view2 = [[UIView alloc] init];
    view2.frame = CGRectMake(10, 100, 300, 30);
    view2.backgroundColor = [UIColor blackColor];
    // 視圖惟一標識
    view2.tag = 2;
    [view1 addSubview:view2];
    
    UIView *view3 = [[UIView alloc] init];
    view3.frame = CGRectMake(20, 50, 100, 100);
    view3.backgroundColor = [UIColor purpleColor];
    // 視圖惟一標識
    view3.tag = 3;
    [view1 addSubview:view3];
    
    // 子視圖
    // 方式一:獲取所有子視圖
    NSArray *subViewArray = view1.subviews;
    for (UIView *viewTemp in subViewArray) {
        
        if(viewTemp.tag == 2){
            viewTemp.backgroundColor = [UIColor whiteColor];
        }
    }
    
    // 方式二:經過tag值獲取對應的子視圖
    UIView *subView = [view1 viewWithTag:3];
    subView.backgroundColor = [UIColor orangeColor];
    
    //3-5
    // 層級的處理
    /* 
     1.同一個父視圖中先加入的View會被蓋在下面
     2.子視圖是跟隨父視圖進行層級遮擋,若是父視圖低於其它同級視圖,則父視圖的子視圖也會被蓋住,可是子視圖和其它視圖的子視圖是沒有關係的
     3.交換兩個層的視圖時須要注意必須填寫正確的層級數
     4.當層交換了以後對應子視圖的數組下標也會進行改變
     */
    
    UIView *view4 = [[UIView alloc] init];
    view4.frame = CGRectMake(10, 100, 300, 300);
    view4.backgroundColor = [UIColor yellowColor];
    //[self.view addSubview:view4];
    
    // 交換兩個層的視圖
    [view1 exchangeSubviewAtIndex:0 withSubviewAtIndex:1];
    // 插入一個視圖到指定層
    UIView *view5 = [[UIView alloc] init];
    view5.frame = CGRectMake(7, 80, 200, 200);
    view5.backgroundColor = [UIColor blackColor];
    //[view1 insertSubview:view5 atIndex:2];//插入一個視圖到指定層
    //[view1 insertSubview:view5 aboveSubview:view3];//插入一個視圖到指定視圖的上面
    [view1 insertSubview:view5 belowSubview:view2];//插入一個視圖到指定視圖的下面
    // 將一個View放入最頂層或者最底層
    // 最頂層
    [view1 bringSubviewToFront:view3];
    // 最底層
    [view1 sendSubviewToBack:view3];
    
    //3-6
    // 自適應
    UIView *backView = [[UIView alloc] init];
    backView.frame = CGRectMake([UIScreen mainScreen].bounds.size.width/2-25, 400, 50, 50);
    // 准許子視圖自適應
    backView.autoresizesSubviews = YES;
    backView.tag = 1001;
    backView.backgroundColor = [UIColor orangeColor];
    [self.view addSubview:backView];
    
    UIView *topView = [[UIView alloc] init];
    topView.frame = CGRectMake(10, 10, 30, 30);
    topView.backgroundColor = [UIColor greenColor];
    // 設置子視圖的適應方式
    topView.autoresizingMask =
//        UIViewAutoresizingFlexibleRightMargin |
//        UIViewAutoresizingFlexibleLeftMargin |
//        UIViewAutoresizingFlexibleTopMargin |
//        UIViewAutoresizingFlexibleBottomMargin |
        UIViewAutoresizingFlexibleWidth |
        UIViewAutoresizingFlexibleHeight;
    [backView addSubview:topView];
    
    UIButton *btn = [UIButton buttonWithType:UIButtonTypeSystem];
    btn.frame = CGRectMake(10, 550, 355, 30);
    btn.backgroundColor = [UIColor blackColor];
    [btn addTarget:self action:@selector(bntClick) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:btn];
}

- (void)bntClick {
    UIView *view = [self.view viewWithTag:1001];
    view.frame = CGRectMake(view.frame.origin.x-5, view.frame.origin.y-5, view.frame.size.width+10, view.frame.size.height+10);
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


@end

第四章:UILable-千變萬幻的文字

4-1 UILable-1

UILable

文本標籤
UIColor顏色類

代碼演示:

UILabel *lable = [[UILabel alloc] init];
lable.frame = CGRectMake(10, 100, 350, 300);
lable.backgroundColor = [UIColor yellowColor];
// 文本
lable.text = @"網提供了豐富的移動端開發、php開發、web前端、html5教程以及css3視頻教程等課程資源。它富有交互性及趣味性,而且你.網提供了豐富的移動端開發、php開發、web前端、html5教程以及css3視頻教程等課程資源。它富有交互性及趣味性,而且你.網提供了豐富的移動端開發、php開發、web前端、html5教程以及css3視頻教程等課程資源。它富有交互性及趣味性,而且你.";
// 文字佈局模式
lable.textAlignment = NSTextAlignmentCenter;
// 文字的顏色
//lable.textColor = [UIColor clearColor];//clearColor 透明色
lable.textColor = [UIColor colorWithRed:0.1 green:0.8 blue:0.2 alpha:1];
// alpha 透明度
//lable.alpha = 0.5;

4-2 UILable-2

多文字處理

1.Label要有足夠的大小
2.設置換行模式
3.設置顯示行數(0或-1不限制行數)

代碼演示:

// 字體的設置
lable.font = [UIFont systemFontOfSize:25];
// 加粗或傾斜
lable.font = [UIFont boldSystemFontOfSize:25];
lable.font = [UIFont italicSystemFontOfSize:25];
// 遍歷系統已安裝的字體
for(NSString *name in [UIFont familyNames]){
    NSLog(@"fontName:%@",name);
}
// 設置字體和大小
lable.font = [UIFont fontWithName:@"Bodoni 72" size:20];
// 設置陰影
//lable.shadowColor = [UIColor redColor];
//lable.shadowOffset = CGSizeMake(-2, -2);

// 處理多文字
// 1.Label要有足夠的大小
// 2.設置換行模式
lable.lineBreakMode = NSLineBreakByCharWrapping;
// 3.設置顯示行數(0或-1不限制行數)
lable.numberOfLines = 0;

4-3 UILable-3

代碼演示:

// 根據字符串大小計算Label的大小
CGSize size = [lable.text sizeWithFont:lable.font constrainedToSize:CGSizeMake(355, 10000) lineBreakMode:NSLineBreakByCharWrapping];
lable.frame = CGRectMake(lable.frame.origin.x, lable.frame.origin.y, lable.frame.size.width, size.height);

[self.view addSubview:lable];

本章完整代碼:

//
//  ViewController.m
//  UILable
//
//  Created by zc on 2017/5/15.
//  Copyright © 2017年 com.zccoder. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    //self.view.backgroundColor = [UIColor redColor];
    
    //4-1
    UILabel *lable = [[UILabel alloc] init];
    lable.frame = CGRectMake(10, 100, 350, 300);
    lable.backgroundColor = [UIColor yellowColor];
    // 文本
    lable.text = @"網提供了豐富的移動端開發、php開發、web前端、html5教程以及css3視頻教程等課程資源。它富有交互性及趣味性,而且你.網提供了豐富的移動端開發、php開發、web前端、html5教程以及css3視頻教程等課程資源。它富有交互性及趣味性,而且你.網提供了豐富的移動端開發、php開發、web前端、html5教程以及css3視頻教程等課程資源。它富有交互性及趣味性,而且你.";
    // 文字佈局模式
    lable.textAlignment = NSTextAlignmentCenter;
    // 文字的顏色
    //lable.textColor = [UIColor clearColor];//clearColor 透明色
    lable.textColor = [UIColor colorWithRed:0.1 green:0.8 blue:0.2 alpha:1];
    // alpha 透明度
    //lable.alpha = 0.5;
    
    //4-2
    // 字體的設置
    lable.font = [UIFont systemFontOfSize:25];
    // 加粗或傾斜
    lable.font = [UIFont boldSystemFontOfSize:25];
    lable.font = [UIFont italicSystemFontOfSize:25];
    // 遍歷系統已安裝的字體
    for(NSString *name in [UIFont familyNames]){
        NSLog(@"fontName:%@",name);
    }
    // 設置字體和大小
    lable.font = [UIFont fontWithName:@"Bodoni 72" size:20];
    // 設置陰影
    //lable.shadowColor = [UIColor redColor];
    //lable.shadowOffset = CGSizeMake(-2, -2);
    
    // 處理多文字
    // 1.Label要有足夠的大小
    // 2.設置換行模式
    lable.lineBreakMode = NSLineBreakByCharWrapping;
    // 3.設置顯示行數(0或-1不限制行數)
    lable.numberOfLines = 0;
    
    //4-3
    // 根據字符串大小計算Label的大小
    CGSize size = [lable.text sizeWithFont:lable.font constrainedToSize:CGSizeMake(355, 10000) lineBreakMode:NSLineBreakByCharWrapping];
    lable.frame = CGRectMake(lable.frame.origin.x, lable.frame.origin.y, lable.frame.size.width, size.height);
    
    [self.view addSubview:lable];
    
    
}


- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


@end

第五章:UIImageView-圖片顯示的利器

5-1 UIImageView-1加載圖片

UIImage&UIImageView

UIImage
UIImage載體
UIImageView

代碼演示:

// UIImage png jpg
// 圖片資源路徑
NSString *path = [[NSBundle mainBundle] resourcePath];
NSString *imagePath = [NSString stringWithFormat:@"%@/1.jpg",path];
// 以路徑形式加載 每一次使用時加載該資源,效率低,但佔用內存少
UIImage *image = [[UIImage alloc] initWithContentsOfFile:imagePath];
// 以名稱形式加載 第一次使用時加載進內存,效率高,但佔用內存多
//UIImage *image1 = [UIImage imageNamed:@"1.jpg"];

// 載體
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
// 圖片顯示在屏幕上的大小是有載體控制
//imageView.frame = CGRectMake(0, 30, image.size.height, image.size.width);
imageView.frame = CGRectMake(0, 20, 240, 320);
[self.view addSubview:imageView];

5-2 UIImageView-2內容模式

代碼演示:

// 內容模式
//imageView.contentMode = UIViewContentModeCenter;//居中
//imageView.contentMode = UIViewContentModeScaleToFill;//拉伸-充滿整個載體
imageView.contentMode = UIViewContentModeScaleAspectFill;//拉伸-不改變比例,充滿最大的邊
//imageView.contentMode = UIViewContentModeScaleAspectFit;//拉伸-不改變比例,充滿最小的邊

5-3 UIImageView-3

代碼演示:

// UIImageView動畫 播放序列圖
NSMutableArray *imageArray = [[NSMutableArray alloc] init];
for(int i=1;i<=13;i++){
    UIImage *imageTemp = [UIImage imageNamed:[NSString stringWithFormat:@"png%d.png",i]];
    [imageArray addObject:imageTemp];
}

UIImageView *imageView2 = [[UIImageView alloc] init];
imageView2.frame = CGRectMake((self.view.frame.size.width-407)/2, 100, 407, 217);
// 設置動畫數組
imageView2.animationImages = imageArray;
// 設置所有圖片播放週期時間(單位:秒)
imageView2.animationDuration = 2;
// 播放多少次 執行次數(0:不限制次數)
imageView2.animationRepeatCount = 10;
// 開始播放動畫
[imageView2 startAnimating];
// 中止播放動畫
//[imageView2 stopAnimating];
[self.view addSubview:imageView2];

本章完整代碼:

//
//  ViewController.m
//  UIImageView
//
//  Created by zc on 2017/5/15.
//  Copyright © 2017年 com.zccoder. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
#if 0
    // 5-1
    // UIImage png jpg
    // 圖片資源路徑
    NSString *path = [[NSBundle mainBundle] resourcePath];
    NSString *imagePath = [NSString stringWithFormat:@"%@/1.jpg",path];
    // 以路徑形式加載 每一次使用時加載該資源,效率低,但佔用內存少
    UIImage *image = [[UIImage alloc] initWithContentsOfFile:imagePath];
    // 以名稱形式加載 第一次使用時加載進內存,效率高,但佔用內存多
    //UIImage *image1 = [UIImage imageNamed:@"1.jpg"];
    
    // 載體
    UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
    // 圖片顯示在屏幕上的大小是有載體控制
    //imageView.frame = CGRectMake(0, 30, image.size.height, image.size.width);
    imageView.frame = CGRectMake(0, 20, 240, 320);
    [self.view addSubview:imageView];
    
    // 5-2
    // 內容模式
    //imageView.contentMode = UIViewContentModeCenter;//居中
    //imageView.contentMode = UIViewContentModeScaleToFill;//拉伸-充滿整個載體
    imageView.contentMode = UIViewContentModeScaleAspectFill;//拉伸-不改變比例,充滿最大的邊
    //imageView.contentMode = UIViewContentModeScaleAspectFit;//拉伸-不改變比例,充滿最小的邊
#endif
    // 5-3
    // UIImageView動畫 播放序列圖
    NSMutableArray *imageArray = [[NSMutableArray alloc] init];
    for(int i=1;i<=13;i++){
        UIImage *imageTemp = [UIImage imageNamed:[NSString stringWithFormat:@"png%d.png",i]];
        [imageArray addObject:imageTemp];
    }
    
    UIImageView *imageView2 = [[UIImageView alloc] init];
    imageView2.frame = CGRectMake((self.view.frame.size.width-407)/2, 100, 407, 217);
    // 設置動畫數組
    imageView2.animationImages = imageArray;
    // 設置所有圖片播放週期時間(單位:秒)
    imageView2.animationDuration = 2;
    // 播放多少次 執行次數(0:不限制次數)
    imageView2.animationRepeatCount = 10;
    // 開始播放動畫
    [imageView2 startAnimating];
    // 中止播放動畫
    //[imageView2 stopAnimating];
    [self.view addSubview:imageView2];
}


- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


@end

第六章:總結與預告

6-1 總結

總結

MVC
UIWindow
UIView
UILable
UIImage
UIImageView

預告

UIButton
UITextField
UITextView
UINavigationController
UIViewController
UISlider等
相關文章
相關標籤/搜索