1.别玩手机,以防错过精彩、关键瞬间
2.注意休息,尤其是晚上
3.不要边听课程边敲代码
4.尽量不要看视频,尽量只参考课堂代码、笔记
5.整理一份属于自己的笔记
》新手:完全对着课堂代码(跟抄书一样)或者边看视频边敲
》熟手:浏览一边课堂代码,边回想边敲遇到不会的去看课堂代码
》高手:不用看课堂代码,回想上课的编程思路,直接开搞
(等级不断提高)
尽量早点睡,第二天上课才有精神,最晚不要超过2点
珍爱时间,远离游戏
使用框架的目的就是让开发更简单
. - (void)addSubview:(UIView *)view;
- 添加一个子控件
. - (void)removeFromSuperview;
- 将自己从父控件移除
. - (UIView *)viewWithTag:(NSInteger)tag;
- 根据一个tag标识找出对应的控件(一般都是子控件)
. @property (nonatomic) CGRect frame;
- 控件矩形框在父控件中的位置和尺寸(以父控件的左上角为坐标原点)
. @property (nonatomic) CGRect bounds;
- 控件矩形框的位置和尺寸(以自己左上角为坐标原点,所以bounds的x、y一般都为0)
. @property (nonatomic) CGPoint center;
- 空间中心点的位置(以父控件的左上角为坐标原点)
/*
经典错误
1.错误一
描述:reason: '[ setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key testLabel.'
原因:有多余的连线
解决:删除多余的连线
2.错误二
描述:reason: '-[MainViewController clickBtn:]: unrecognized selector sent to instance 0x7feb69418640'
原因:找不到对应的方法
解决:1.添加对应的方法 2.删除多余的连线
*/
#import "ViewController.h"
@interface ViewController ()
//已经有强指针指向
@property (weak, nonatomic) IBOutlet UILabel *showLabel;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
#pragma mark - 点击红色按钮
- (IBAction)redBtn {
// //改变文字颜色
// self.showLabel.textColor = [UIColor redColor];
// //修改文字内容
// self.showLabel.text = @"现在我变成红色啦";
// //改变背景颜色
// self.showLabel.backgroundColor = [UIColor greenColor];
// //文字居中
// self.showLabel.textAlignment = NSTextAlignmentCenter;
// //改变文字的大小
// self.showLabel.font = [UIFont systemFontOfSize:13.0];
[self changeLabelWithColor:[UIColor redColor] text:@"现在我变红啦" backColor:[UIColor greenColor] fontsize:13.0];
}
#pragma mark - 抽取方法
/**可供调用的改变文字颜色,内容,背景颜色,大小的方法*/
- (void)changeLabelWithColor:(UIColor *)color text:(NSString *)text backColor:(UIColor *)bcolor fontsize:(float)size{
//改变文字颜色
self.showLabel.textColor = color;
//修改文字内容
self.showLabel.text = text;
//改变背景颜色
self.showLabel.backgroundColor = bcolor;
//文字居中
self.showLabel.textAlignment = NSTextAlignmentCenter;
//改变文字的大小
self.showLabel.font = [UIFont systemFontOfSize:size];
}
#pragma mark - 点击黄色按钮
- (IBAction)yellowBtn {
[self changeLabelWithColor:[UIColor yellowColor] text:@"我又变黄了,啦啦啦" backColor:[UIColor redColor] fontsize:14.0];
}
#pragma mark - 点击绿色按钮
- (IBAction)greenBtn {
[self changeLabelWithColor:[UIColor greenColor] text:@"最终我还是变绿了" backColor:[UIColor purpleColor] fontsize:12.0];
}
@end
#import "ViewController.h"
@interface ViewController ()
//绿色的view
@property (weak, nonatomic) IBOutlet UIView *greenView;
/**可变数组*/
@property (nonatomic,strong)NSMutableArray *arrayM;
@end
@implementation ViewController
//调用viewDidLoad之前会先调用loadView
- (void)loadView
{
[super loadView];
// NSLog(@"%s",__func__);
}
/**
1.系统调用
2.控制器的view加载完毕的时候调用
3.控件的初始化,数据的初始化(懒加载)
*/
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
// NSLog(@"%s",__func__);
//1.查看绿色view的父控件,结论:就是控制器的view
// NSLog(@"绿色的view的父控件:%@--控制器的view:%@",self.greenView.superview,self.view);
//2.查看绿色view的子控件
// NSLog(@"绿色view的子控件:%@",self.greenView.subviews);
//3.控制器的view的子控件
// NSLog(@"%@",self.view.subviews);
//4.控制器的view的父控件 --> UIWindow,这边看不到,要到viewDidAppear中才可以
// NSLog(@"viewDidLoad ---- %@",self.view.superview);
}
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
// NSLog(@"viewDidLoad ---- %@",self.view.superview);
}
/**
1.系统调用
2.当控制器收到内存警告的时候调用
3.这时要去掉一些不必要的内存,去除耗时的内存
//此处可以使用模拟器模仿,内存警告会调用此方法
*/
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
NSLog(@"%s",__func__);
//假设数组arrayM中不断添加控件引发的内存警告,清空内存则要如下即可
self.arrayM = nil;
}
@end
#import "ViewController.h"
@interface ViewController ()
//黄色的view,这是脱线形成的属性
//@property (weak, nonatomic) IBOutlet UIView *orgView;
@property (weak, nonatomic) UIView *orgView;
@property (weak, nonatomic) IBOutlet UIButton *btn1;
@property (weak, nonatomic) IBOutlet UIButton *btn2;
@property (weak, nonatomic) IBOutlet UIButton *btn3;
@end
@implementation ViewController
/**尽量少使用tag:
1>tag的效率非常差
2>tag使用多了,非常容易乱
*/
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
//根据tag拿到对应的view
UIView *redView = [self.view viewWithTag:1];
self.orgView = redView;
//1.创建UISwitch对象
UISwitch *sw = [[UISwitch alloc]init];
//2.加到控制器的view中
[self.view addSubview:sw];
//3.创建UISwitch对象
UISwitch *sw1 = [[UISwitch alloc]init];
//4.加载到黄色的view
[redView addSubview:sw1];
//5.创建一个选项卡独享
UISegmentedControl *sg = [[UISegmentedControl alloc]initWithItems:@[@"111",@"222",@"3333"]];
//6.加载到黄色的view
//后添加上去的控件,如果和前一个添加上去的控件在同一个层,而且位置一样,会盖在上一个添加的控件上面
[redView addSubview:sg];
//7.移除
// [sg removeFromSuperview];
// [self.orgView removeFromSuperview];
// [sw removeFromSuperview];
//
//这个在这里写没有效果,要写到viewDidAppear中,才可以
[self.view removeFromSuperview];
}
//[self.view removeFromSuperview];在词才能有效果
//只要控件有父控件,就一定能够移除
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
// [self.view removeFromSuperview];
}
- (IBAction)removeBtnClick {
[self.orgView removeFromSuperview];
}
- (IBAction)ClickBtn:(UIButton *)button {
//方法一:按钮点击
// if (button == self.btn1) {
// NSLog(@"我是按钮1,我被点了");
// }else if (button == self.btn2)
// {
// NSLog(@"我是按钮2,我也被点了");
// }else if (button == self.btn3)
// {
// NSLog(@"我是按钮3,点我干嘛");
// }
//方法二:查看按钮点击
switch (button.tag) {
case 3:
NSLog(@"哈哈,我是按钮1,我最先备点");
break;
case 4:
NSLog(@"我是按钮2,其实我才是先被点的");
break;
case 5:
NSLog(@"我才是被先点击的按钮3好不好");
break;
default:
break;
}
//做公共的事情
NSLog(@"做公共的事情");
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
#import "ViewController.h"
@interface ViewController ()
//MainStoryboard上显示的label
//这里我们不用连线的label
//@property (weak, nonatomic) IBOutlet UILabel *showLabel;
@property (weak, nonatomic) UILabel *showlabel;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
//创建UIlabel对象
UILabel *label = [[UILabel alloc]init];
//设置frame(位置和尺寸)
label.frame = CGRectMake(100, 100, 100, 60);
//设置背景颜色
label.backgroundColor = [UIColor purpleColor];
//将label添加到控制器的view中
[self.view addSubview:label];
self.showlabel = label;
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (IBAction)centerBtnCilck {
//center可以改变点的位置,中间点
//改变位置
// self.showlabel.center = CGPointMake(100, 400);
//显示到界面中间
self.showlabel.center = CGPointMake(self.view.bounds.size.width * 0.5, self.view.bounds.size.height * 0.5);
}
- (IBAction)boundsBtnClick {
//bounds只能改变尺寸,不能改变wiezhi ios9之后,中心点不变,向四周延伸
self.showlabel.bounds = CGRectMake(0, 0, 200, 120);
}
- (IBAction)frameBtnClick {
//frame可以改变位置,也能改变大小,一般不轻易使用
//方式1
// self.showlabel.frame = CGRectMake(200, 100, 100, 60);
//方式2
// self.showlabel.frame = (CGRect){{200,100},{100,60}};
//方式3
//结构体是值传递,不是地址传递
// self.showlabel.frame.size += 100;要想改变不能这么写,要向下面写
CGRect frame = self.showlabel.frame;
// frame.origin.x -= 100 ;// 改变x值
// frame.origin.y += 100 ;//改变y值
// frame.size.width += 50 ;//改变宽度
frame.size.height += 100;//改变高度
self.showlabel.frame = frame;
}
@end