IOS-0811按钮操作(笔记)

最近app忙着测试上线,闲得慌,虽然还有很多思考不周全的地方,但是此刻我在网上找了ios的视频学习了,之前只了解过java,C的一些些基本概念.

不耐烦C基础一点点的学习,直接就看就业班的了,
今天看完了0811-按钮操作,主要做了一个加法计算器和上下左右移动图片的项目,
发现学完Android之后再去学ios确实那种感觉….
也比之前0基础编程的感觉好太多了
而且还可以对比两者的设计,
比如今天看到一个数字软键盘,就联想到Android的数字键盘呼出,(好像我之前都没有关注这些点)

手机终端的开发并不是难事,只是需要很多很多时间去优化用户体验,去打磨自己的app,然而作为一个coder,team work 你不能真真的亲力亲为开发的每一步,我常常心里觉得失落…

笔记:
1,为了方便开发者开发出强大的功能,苹果提供了各种各样的框架
UIkit 创建和管理应用程序的用户界面
QuartzCore 提供动画特效以及通过硬件进行渲染的能力
CoreGraphics 提供2D绘制的基于C的API
CoreLocation 使用GPS和WIFI获取位置信息
MapKit 为应用程序提供内嵌地图的接口
AVFoundation 音频,视频处理

我们首先从UI界面开始
* 主要用到的都是UIButton UILabel UITextField 都是继承自UIView (这里有ios和Android不一样的地方, 每个UIView都是一个容器,;能容纳其他UIView;Android里面也是有View,textView button什么的也是其子类,但是控件是放在布局里的,布局是ViewGroup的子类,VIewGroup是View的子类).
动手后遇到的一些问题

UIVIew和ViewController
改backgroud 透明度
IBAction 和IBoutlet

//关闭键盘
//谁申请,谁释放
//FirstResponder 光标所在的文本框
//resign 辞去
[self.num1 resignFirstResponder];
[self.num2 resignFirstResponder];

//让视图关闭键盘,无论现在谁是第一响应者
[self.view endEditing:YES]
//Yes和NO都可以 参数表示是否强行关闭键盘
endEditing.NO 在多线程的时候可能显示不对应该显示Yes

私有扩展 Xcode 4.6开始,苹果建议不开放的属性和方法定义在私有扩展中,可以保证,.h中只定义对外开放的属性和方法.

IBAction 本质上就是viod,只不过能够允许连线而已.

跳转头文件
cmd + 单击
cmd + ctrl +j

控件共有的属性,每个控件都有自己的位置和尺寸,都有自己的父控件和子控件,所有的子控件都继承自UIView,
frame :位置和尺寸
center :中心点位置
bounds

1.针对虚拟机 ios开发中应用界面在虚拟机中显示不全问题?
在Xcode里打开Storyboard,点右边工具窗口最上方的左起第一个图标,然后在右边工具窗口中找到Interface Builder Document,确保这项里的Use Size Classes处于未选中状态,即可让sotryboard中ViewController的大小恢复到以前的标准屏幕大小。
2.点击UITextField 不显示键盘 simulator -hardware-keyboard -Toggle softwarekeyboard XXX
3.UITextField 显示keyboardType Decimal Pad和number Pad的区别 就是有小数点和没小数点区别
4.如果storyboard的view中没有箭头,查看一下这个地方的设置

案例一:加法计算器

@interface ViewController ()
@property (nonatomic,weak) IBOutlet UITextField *num1;
@property (nonatomic,weak)IBOutlet UITextField *num2;
@property (nonatomic,weak) IBOutlet UILabel *resultLabel;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

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

NSString *num1=    self.num1.text;
NSString *num2=    self.num2.text;
 NSLog(@"%@ ==%@",num1,num2);

    int result=num1.intValue+num2.intValue;

    self.resultLabel.text=[NSString stringWithFormat:@"%d",result];

    //关闭键盘
    //谁申请,谁释放
    //FirstResponder 光标所在的文本框
    //resign 辞去
// [self.num1 resignFirstResponder];
// [self.num2 resignFirstResponder];

    //让视图关闭键盘,无论现在谁是第一响应者
    [self.view endEditing:YES];
    //Yes和NO都可以 参数表示是否强行关闭键盘

}

@end

案例二:作业QQ登陆
Android Text View的hint -对应着 Storyboard 的Placeholder

而且 ios还有clear Button!!!这在andorid 的EditText是要自定义的.

案例三:上下左右

一版
1.枚举解决magicnumber
2.定义宏 每一次都是20
3.代码抽取

#import "ViewController.h"

/*枚举类型本质上就是整数,定义的时候,如果只制定了第一个数值,后续的数值会依次递增 枚举类型是解决魔法数字比较常用的手段 */
typedef enum{
    KMovingDirTop=0,
    KMovingDirLeft,
    KMovingDirRight,
    KMovingDirButton,
}KMovingDir;

#define KMovingDela 20.0f;


@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIButton *imageButton;



@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
- (IBAction)top {
    /*修改位置可以通过frame 在OC中,不允许直接修改”对象“的”结构体属性“的”成员“ 但是允许修改”结构体属性“的”成员“ self.iconButton.frame.origin.y -=20; 直接报错 如果要修改对象的结构体属性。需要三个步骤 */
    //1.取出frame
     CGRect frame=self.imageButton.frame;
    //2.修改结构体的成员
      frame.origin.y -=20;
    //3.重新为对象的结构体属性赋值
    self.imageButton.frame=frame;
}

//下 左 右抽取代码
- (IBAction)move:(UIButton *)sender {
    CGRect frame=self.imageButton.frame;
    switch (sender.tag) {
        case KMovingDirLeft:
            frame.origin.x -=KMovingDela;
            break;
        case KMovingDirRight:
    frame.origin.x +=KMovingDela;
            break;
        case KMovingDirButton:
                  frame.origin.y +=KMovingDela;
            break;

        default:
            break;
    }
    self.imageButton.frame=frame;

}

- (IBAction)zoom:(UIButton *)sender {
    //非0为真 ZoomIn ZoomOut
    CGRect frame=self.imageButton.frame;

    if(sender.tag){
         NSLog(@"zoomin");
        frame.size.height +=KMovingDela;
        frame.size.width  +=KMovingDela;
    }else{
        NSLog(@"zoomout");
        frame.size.width -=KMovingDela;
        frame.size.height -=KMovingDela;
    }
    self.imageButton.frame=frame;
}


@end

若把frame改成bound也可以放大缩小

区别就是frame是左上角,bounds是中心:

  • (IBAction)zoom:(UIButton *)sender {
    //用01表示真假表示左右旋转
    CGRect frame=self.imageButton.bounds;

    if(sender.tag){
    NSLog(@”zoomin”);
    frame.size.height +=KMovingDela;
    frame.size.width +=KMovingDela;
    }else{
    NSLog(@”zoomout”);
    frame.size.width -=KMovingDela;
    frame.size.height -=KMovingDela;
    }
    self.imageButton.bounds=frame;
    }

tips:
也可以通过center来修改位置

- (IBAction)move:(UIButton *)sender {

     CGPoint center=self.imageButton.center;
    switch (sender.tag) {
                      case KMovingDirLeft:
                          center.y-=30;
                          break;
                      case KMovingDirRight:
                          center.y+=30;
                          break;
                      case KMovingDirButton:

                          center.x-=50;
                          break;

    }
     self.imageButton.center=center;
}

Xcode有个bug:复制代码后修改在原来的代码上

你可能感兴趣的:(ios)