iOS开发UI篇 -- 0323初识iOS

简介:iOS的一些基础只是,包括xcode、模拟器,最后一个UIButton和frame属性结合的一个demo


1.Retain:视网膜屏幕(高清屏幕),从iOS4开始


2、新建项目:
    Product Name :产品名称
    Organnization Name:组织名称
    Company Identifier:公司的唯一标识,一般是公司域名倒过来写
    Bundle Identifier: app的唯一标识,使用Company Identifier + Product Name 来当做app唯一标识
    Class Prefix:类前缀,可以写自己开发的(宝杰BJ),也可以是项目名称(微博WB)
    Device:选择iPhone

3、xcode文件介绍:初学者一般新建Single View Project

4、UIViewController:控制器,来控制UIView的
  其实,每当显示一个新界面的时候,首先会创建一个新的UIViewController对象,然后创建一个对应的全屏UIView,
UIViewController负责管理这个UIView
  UIViewController就是UIView得大管家,负责创建,显示,销毁UIView,
负责监听UIView内部的事件,负责处理UIView与用户交互。
  每一个UIViewController对应一个UIView,每一个UIVc对象内部都有一个UIView属性,就是他负责管理的UIView对象



5、快捷键:
    模拟器快捷键:
        退回手机主界面:Commad + Shitf + H

6、监听按钮点击
  因为UIVc的作用就是监听UIView的内部事件,当点击事件发生的时候,会调用一个Btn方法来通知UIVc按钮被点了,
UIVc就可以在这个Btn方法中做相应的事情

7、如果项目中有多个storyBoard,如何确定哪个是主界面?
    点击项目--targets-- Deployments--Main Interface 就行设置

8、模拟器的使用
    设置大小: 模拟器--Window--缩放比例 进行设置
    设置位置:模拟器--调试--位置--自定义位置
    设置型号:模拟器--硬件--设备
    设备旋转:模拟器--硬件--xx旋转
    回到首页:模拟器--硬件--首页(command shift h)
    卸载app: 长按住app,抖动;取消:返回首页即可
    退出app: 回到首页app并没有退出,连续两次(command shift h)来关闭程序
    
   模拟器处于运行状态的话对app进行改变、设置 会报错!

9、退出第一响应者
// 单个退出
[self.num1 resignFirstResponder];

// 全部退出
[self.view endEditing:YES]

10、连线问题(线还连着,但是定义的属性已经注释了)
setValue:forUndefiendKey:]this class is not key value.....

11、属性和方法不必暴漏,建议放在.m文件的Interface中

12、位置尺寸
CGRect frame:以父控件的左上角为坐标原点,表示控件的位置尺寸(万能的)
CGRect bounds:以控件本身的左上角为坐标原点,表示控件的尺寸(xy都为0)
CGPoint center:以父控件的左上角为坐标原点,控件的中点位置

13、UIButton
能显示文字,能显示图片(背景图片和前置图片),还能调整内部图片和文字的位置

14、关于结构体:    
    不允许直接修改对象的结构体属性 的成员,可以间接修改。
 
    eg : self.btn.frame.origin.y = self.btn.frame.origin.y - 10;(error)
    对象:self.btn
    对象的结构体属性:self.btn.origin
    对象的结构体属性成员:self.btn.origin.y

    // 设置临时结构体
    CGRect tmpFrame = self.btn.frame;

    // 修改
    tmpFrame.origin.y -= 10;

    // 将修改好的赋值给原来的结构体
    self.btn.frame = tmpFrame;

使用frame和bounds改变尺寸(放大缩小,修改CGSize)区别在于,bounds中心点位置不变,frame左上角坐标不变(xy没改变)

15、storyboard和xib
  共同点:
  都用来描述软件界面
  都用Interface Builder工具来编辑

  不同点
  Xib是轻量级的,用来描述局部的UI界面,在iOS5之前使用

  Storyboard是重量级的,用来描述整个软件的多个界面,并且能展示多个界面之间的跳转关系,在iOS5之后出现


16、使用frame属性实现对UIButton的移动和缩放

//  ViewController.m
//  0323-常见结构体应用
//
//  Created by hubaojie on 15-5-28.
//  Copyright (c) 2015年 hubaojie. All rights reserved.
//

#import "ViewController.h"
#define btnX 100
#define btnY 100
#define btnW 55
#define btnH 40
#define AddBtnY 50
#define moveSize 30;
@interface ViewController ()
@property(nonatomic,weak)UIButton *upBtn;
@property(nonatomic,weak)UIButton *downBtn;
@property(nonatomic,weak)UIButton *leftBtn;
@property(nonatomic,weak)UIButton *rigthBtn;
@property(nonatomic,weak)UIButton *bigBtn;
@property(nonatomic,weak)UIButton *smallBtn;
@property(nonatomic,weak)UIButton *headBtn;

@end

@implementation ViewController
            
- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    for (int index = 0; index < 7; index ++) {
        UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
        btn.backgroundColor = [UIColor grayColor];
        [btn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
        [self.view addSubview:btn];
        [btn addTarget:self action:@selector(moveOrChange:) forControlEvents:UIControlEventTouchUpInside];
        btn.tag = 10 + index;
 
        switch (btn.tag) {
            case 10:
                btn.frame = CGRectMake(btnX, btnY, btnW, btnH);
                [btn setTitle:@"up" forState:UIControlStateNormal];
                self.upBtn = btn;
                break;
            case 11:
                btn.frame = CGRectMake(btnX, btnY+AddBtnY, btnW, btnH);
                [btn setTitle:@"down" forState:UIControlStateNormal];
                self.downBtn = btn;
                break;
            case 12:
                btn.frame = CGRectMake(btnX, btnY+AddBtnY*2, btnW, btnH);
                [btn setTitle:@"left" forState:UIControlStateNormal];
                self.leftBtn = btn;
                break;
            case 13:
                btn.frame = CGRectMake(btnX, btnY+AddBtnY*3, btnW, btnH);
                [btn setTitle:@"right" forState:UIControlStateNormal];
                self.rigthBtn = btn;
                break;
            case 14:
                btn.frame = CGRectMake(btnX, btnY+AddBtnY*4, btnW, btnH);
                [btn setTitle:@"big" forState:UIControlStateNormal];
                self.bigBtn = btn;
                break;
            case 15:
                btn.frame = CGRectMake(btnX, btnY+AddBtnY*5, btnW, btnH);
                [btn setTitle:@"small" forState:UIControlStateNormal];
                self.smallBtn = btn;
                break;
            case 16:
                btn.frame = CGRectMake(220, 240, 50, 50);
                [btn setTitle:@"head" forState:UIControlStateNormal];
//                [btn setTitleColor:[UIColor greenColor] forState:UIControlStateNormal];
                self.headBtn = btn;
                break;
                
            default:
                break;
        }
    }
}
- (void)moveOrChange:(UIButton *)btn{
    // 我们不可以直接修改 对象的结构体的属性的成员变量,但是我们可以间接修改
    
//    对操作添加动画效果,最后别忘记提交动画
    [UIView beginAnimations:nil context:nil ];
    [UIView setAnimationDuration:2];
//    1. 建立临时结构体
    CGRect tmpFrame = self.headBtn.frame;
    switch (btn.tag) {
        case 10:
//            2. 间接对结构体属性成员变量进行操作
            tmpFrame.origin.y -= moveSize;
            break;
        case 11:
            tmpFrame.origin.y += moveSize;
            break;
        case 12:
            tmpFrame.origin.x -= moveSize;
            break;
        case 13:
            tmpFrame.origin.x += moveSize;
            break;
        case 14:
            tmpFrame.size.width += moveSize;
            tmpFrame.size.height += moveSize;
            break;
        case 15:
            tmpFrame.size.width -= moveSize;
            tmpFrame.size.height -= moveSize;
            break;
            
        default:
            break;
    }
//    3. 将修改后的结构体赋值给原结构体
    self.headBtn.frame = tmpFrame;
    
    [UIView commitAnimations];
}

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

@end



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值