int score = [self.scoreBtntitleForState:UIControlStateNormal].intValue;
1、获取按钮中的文本字符串的方法:[需要获取内容的按钮 titleForState:按钮状态 ];
2.1、获取按钮中的当前文本:[按钮名 currentText]
2、字符串内容转为整数的方法:字符串.intValue;
2.1、设置按钮的文字的方法:[需要设置文字的按钮 setTitle:需要设置的文字的内容 forState:UIControlStateNormal];
2.2、设置按钮的文字颜色的方法:[需要设置文字的按钮 setTitleColour:需要设置的颜色forState:UIControlStateNormal];
2.2、根据文件路径创建数组
NSArray *dictArray = [NSArrayarrayWithContentsOfFile:文件的路径
3、加载文件内容的方法:[NSBundle mianBundle] pathForResource:需要加载的文件名 ofType:需要加载的文件的类型],此方法返回的是一个字符串,它是需要加载的文件的路径,再利用数组的方法[NSArray arrayWithContentOfFile:path]把文件内容加载到数组中存储起来。
4、数组之间可以通过数组名相互赋值。
5、获取父控件中的子控件的方法:父控件名.subviews。
6、只要声明了一个类,就可以在其他类中利用这个类创建对象
7、判断两个字符串是否相等:[字符串 isEqualToString:字符串] 返回值为BOOL类型,YES代表相等,NO代表不相等。
8、设置按钮内的图片的方法:[按钮 setImage:图片名称 forState:按钮状态]。
9、设置UIImageView的图片方法是通过给它的image属性赋值。
9、设置按钮背景图片[按钮名称 setBackgroundImage:[UIImageimageNamed:@"btn_option"]forState:按钮状态]
9.1 、按钮的背景颜色的设置主要通过按钮的backgroundColour设置,例如:按钮名.backgroundColor = [UIColorblackColor];
10、设置按钮是否可用:按钮.enabled = YES 代表可用 按钮.enabled = NO代表不可用。
11、// 2.更换阴影和头像的位置
把一个子控件放到父控件的最前端的方法 [父控件 bringSubviewToFront:需要放到界面最前面的按钮];
12、[需要删除的子控件 removeFromSuperview];
13、想要显示或者隐藏一个按钮,只需要改变按钮的hidden属性 ,按钮名.hidden = YES 隐藏按钮
按钮名.hidden = NO 显示按钮
14.按钮透明度的设置,需要借助按钮的alpha属性,其值为(0到1之间)。
15、控件名.subviews 表示控件中所有的子控件。
16、方法的监听:[按钮名 addTarget:selfaction:@selector(answerClick:)forControlEvents:UIControlEventTouchUpInside]
@selector(answerClick:) 表示点击按钮后,需要执行的方法。
17、[控件名 addsubview:控件名] 与[可变数组或者可变字符串 addObject: 对象]的区别
[控件名 addsubview:控件名]用于把一个控件添加到另一个控件中,让这个控件成为另一个控件的子控件,而里一个控件成为这个控件的父控件。
[数组或者字典 addObject: 对象]用于往可变数组NSMutableArray或者可变字符串NSMutableString中添加元素。
18、方法:- (void)viewDidLoad
{
[super viewDidLoad]
程序已启动就加载到界面上的内容
}
19、设置UIScrollView 代理的步骤:
UIScrollView有个代理属性叫delegate, 但是要成为UIScrollView的代理,也就是给这个对象赋值,满足两点,第一:只有对象才能成为UIScrollView的代理,第二:必须遵守UIScrollView的协议<UISrollViewDelegate>,其中包含代理者必须要实现方法声明的列表,第三:用这个对象给UIScrollView的delegate属性赋值,第四:一般我们让
控制器作为UIScrollView的代理。
具体分三个步骤:
1、让控制器遵守代理协议<UIScrollViewDelegate>,一般写在类的声明后面。
2、让控制器成为UIScrollView的代理:UIScrollView.delegate = self 这里的self表示控制器。
3、在代理中也就是控制器中实现协议中的方法。
20、代理设计模式的作用:第一监听的思想:可以让一个对象B监听另一个对象A的状态。
第二:通知的思想:一个对象B状态发生了改变(做了某些是事情)想通知对象B。
21、UIScrollView的三个重要属性:
第一:contentSize:指定滚动的范围,
第二:contentOfSet:描述滚动的位置:它的X与Y值十一图片的左上角为坐标原点。
第三:contentInSet:额外增加的滚动区域:它有top(顶部),left(左边),bottom(地步),right(右边)四个值。
22、把点CGPoint、尺寸CGSize、区域CGRectz转换成字符串的方法:[NSStringFromCGPoint:点的名称]
23、UIScrollView的缩放:当用户开始拖拽ScrollView时开始调用方法;
— (UIView *)ViewForZoomingInScrollView:(UIScrollView *)UIScrollView
{
return 需要缩放的控件;
}
不过在调用这个方法前必须先设置缩放比例,通过控件的属性MaxImumZoomScroll和MinImumzoomscroll分别
设置最大和最小的缩放比例。
24、往控件UIImageView中添加图片是利用UIImageView的image属性给它进行赋值,如:
UIImageView控件名.image = [UIImage imageNamed: 图片名]加载后的图片对象。
25、隐藏或者显示水平方向和竖直方向上的滚动条主要是设置UIScrollView的属性:showsHorizontalScrollInDicator;
显示或者隐藏分页:利用UIScrollView的pagingEnabled属性,给他赋值为YES。这个属性分页的宽度是以一个Scrollview可视宽度为单位的,所以在对图片进行分页时必须保证一张图片的宽度等于一个Scrollview可视宽度。
26、设置页码的页数: l利用控件Page Control 的属性numbersOfPage,其值为一个整数。
27、监听ScrollView滚动时的方法:
— (void)scrollViewDidScroll:(scrollView *)scrollView 意味着只要ScrollView控件发生滚动就会调用该方法,记住,scrollView的代理方法都是以Scroll开头的。
28、显示当前页:利用pageControl的属性currentPage进行设置,其值为整数,值为几就代表显示第几页。
29、如果想要控件隔断时间做事情必须利用两个类:NSTimer(时间间隔比较大时使用一般一秒或几秒) 和CADisPlayLink(时间间隔比较小时使用一般零点零几秒)。
30 、NSTimer定时器方法的区别:
调用timerWithTimeInterval方法不会自己走,必须还要调用方法fire时才会自己走,而一调用方法scheduledTimerWithTimeInterval就会隔一段时间后就自己走。这个方法是开启定时器的方法:
方法里面:
TimeInterval :表示时间间隔,
target和selector表示要调用哪个对象的那个方法,
repeat:表示是否需要重复,需要写YES,不需要写:NO。
userInfo:用来传参数用的,用不上的话直接写nil。
31、停止定时器的方法:[定时器 invalidate] 注意,定时器停止后就损坏,不能在使用,如果还想要它重新工作,就必须重新调用定时器的SchduledTimerWithTimeInterval开启定时器。
32、设置UIScrollView滚动时,是通过改变它的属性contentOfSet的值来实现的。
33、UIScrollView在从一个位置滚动到另一个位置时,可以实现动画滚动,利用下面方法:
[self.scrollView setContentOfSet:终点的位置 animated: BOOL] // YES表示需要动画,NO表示不需要动画
1、UITableView,table是表格的意思,表格分两种,一种是分组的一种是不分组的。
2、UITableView 是继承自UIScrollView ,而且它默认为只能上下滚动,不能左右滚动,如果以后见到
表格数据的界面时,一般用UITableView。
3、如何在UITableViews上展示数据:
UITableView需要一个数据源(dataSource)来显示数据,UITableView会向数据源发送一个消息
查询一共有多少行数据以及每一行显示什么数据等。
通过以下方法实现:
*******设置数据源*****
self.tableView.dataSource = self
要成为UITableView的数据源必须要遵守UITableView的协议<UITableViewDataResource>,这样的话让数据源实现协议里面的方法,这样UITableView通过调用数据源里面的方法拿到方法的返回值然后显示到UITableView的界面上。
3.1、*******表示一共有多少组数据:********系统自动调用
— (NSInteger)numberOfSectionsInTableView: (UITableView *)tableView
{
return 整数;
}
3.2、*******表示第section有多少行数据:********系统自动调用
— (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger *)section
{
if(section == 0){ // 表示当section为0时,也就是第一组要显示2行数据
return 2;
}else{
return 2; // 表示其他组显示2行数据
}
return 整数;
}
每一行都是一个UITableViewCell 它的本质也是一个UIView控件。一个cell表示一行显示的内容。
3.3、********每一行显示怎样的内容(cell)******系统自动调用
—(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
return cell;
}
上面的indexPath有两个属性,分别为indexPath.row和indexPath.section两个属性,也就是说我们拿到
它的indexPath就知道它是哪一组哪一行。
给每一行设置,也就是给每一行的cell的textLabel.text属性赋值:cell.textLabel.text = @"" // 字符串
4、设置每一组的头部和尾部的文本的方法:
头部的:—(NSString *)tableView:(tableview *)tableView titleForHeaderInSection:(section *)section
{
return NSString;
}
尾部的:—(NSString *)tableView:(tableview *)tableView titleForFooterInSection:(section *)section
{
return NSString;
}
5、创建一个UITableViewCell的方法
UITableViewCell *cell = [UITableViewCell alloc] initWithStyle: 有四种(默认,子标题等;
cell里面的属性:显示文字的两个属性:cell.textLabel.text 显示标题文字
cell.detailTextLabel.text 显示描述性的文字
cell.imageView.image 显示图片
字典转模型的代码:[模型 setValueForKeysWithDictionary:字典];
6、一个字典里面存放的是键值对,前面是键后面是值,一个字典可以存放无数个键值对。
通过字典键值对取值是通过字典的键来取出相应的值的:Value = dict[@"Kyes"];
字典转模型,首先有一个字典数组,也就是一个装着字典的数组,字典里面有很多的键值对
所以字典转模型就是要把字典数组里的所有内容用一个模型数组来存储起来,因此有:
第一:
创建一个模型,存储字典,模型的属性对应字典里面的键值对,一个字典对应一个模型,一个键值对对应一个属性;
第二:
一个字典数组对应一个模型数组;
第三:取出模型
定义一个模型类指针指向模型数组中的模型
7、设置UITableView的行高的属性:rowHeight;默认为44,rowHeight针对所有的行,还可以用代理的方法;代理方法可以根据传入的参数IndexPath精确控制每一行的高度。
8、cell的常见属性:
accessoryType 设置最右边的指示器,它是一个枚举,有5种 如 > 、勾、等。
accessoryView 在右边设置自定义的控件,比如,按钮、开关、标签等。
backgroundView 设置Cell的背景颜色和背景图片,通常通过创建一个UIView(设置颜色background属性)和(设置图片)UIImageView实现
selectedBackgroundView 设置cell被选中的时候的背景颜色或者背景图片,通常通过创建一个(UIView)和(UIImageView)实现。
注意:backgroundView的优先级高于backgroundColour,并且背景默认是填充,不用设置尺寸。
9、tableview的常见属性
separatorStyle 分隔线样式,它是个枚举。
separatorColour 分隔线颜色
tableViewHeaderView 表格的头部控件(直接显示在表格的最顶部)。
tableViewFooterView 表哥的尾部控件(直接显示在表格的最底部)。
10、颜色的常识:
颜色分两个通道:一个是ARGB,也叫32位颜色:分别表示:alpha 透明 Red 红色 Green 绿色 Blue 蓝色
另一个是RGB通道,也叫24位颜色:分别为 Red 红色 Green 绿色 Blue 蓝色
每一个颜色占8个二进制位,并且由于颜色是用16进制表示的,而且一个十六进制为表示4个
二进制位,所以我们用2位16进制位表示颜色。
也就是每一种颜色红 、绿、蓝的整数范围为(0~255)但是苹果官方一般支持比例写法,也就是
当用红绿蓝表示颜色时,红、绿、蓝的每一个数值都要除以255.0。
可以用[UIColour colourWithRed: 255/255.0 green: 0 blue: 0 alpha:255/255.0]方法创建多种颜色。
11、 UITableView的性能优化:
*********这个方法是每当有一个Cell进入我们的视野范围内,就会调用***********
—(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
return cell;
}
性能优化的步骤:离开屏幕的cell它会自动销毁。
static NSString *ID = @"A" 这里用static修饰局部变量,保证ID只分配一次存储空间,这样可以使性能更优化。
1、通过一个标识去缓存池中寻找可循环利用的cell。
dequeue:出列
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
2、如果缓存池中找不到可循环利用的cell,创建一个新的cell,给cell贴个标识。
if(cell == nil){
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:ID]
}
3、给cell设置新的数据。
MJHero *hero = self.hero[index path.row]; 这里不用关心行号row多少,系统会根据显示在屏幕上的cell找到它的行号传进来。
cell.textLabel.text = hero.name;
cell.detailTextLabel.text = hero.intro
cell.imageView.image = [UIImage imageNamed:hero.icon];
return cell;
4、[ValueForKeyPath:NSString *]与[ValueForKey:NSString]的区别:
前者可以间接取值,后者只能直接取值,直接取值就是自己取自己的属性的值,而不能取自己的属性的属性的值,而间接取值就是自己可以取自己的属性的属性的值。
12、数据刷新:tableView中刷新数据是通过改模型来改变cell的值的。
UIAlertView 弹框,它有一个属性叫alertViewStyle可以在弹出的框里面显示文本框和密码框
[alert txetFieldAtIndex:索引值].text =?可以拿到索引值对应的文本框里的文本。
两个方法:(代理方法)什么的代理方法就以什么的名称开头。
1、点中cell的时候调用。
— (void)UITableView(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexpath *)IndexPath
2、取消点中cell的时候调用。
— (void)UITableView(UITableView *)tableView didDeSelectRowAtIndexPath:(NSIndexpath *)IndexPath
3、数据刷新的步骤:
3.1、取得文本框的文字
NSString *name = [alert txetFieldAtIndexPath:索引值].text
3.2、修改模型数据
int row = alertView.tag; //通过alertView.tag绑定的点击cell时的行号。
MJHero *hero = self.hero[row]
hero.name = name;
3.3、告诉tableView重新加载模型数据
全部刷新:(会有性能问题)
[self.tableView reLoadData] 当调用这个方法时,系统会自动调用一共多少组,一组有多少行,每一行显示什么内容的那三个方法。这样就达到了重新刷新数据的目的。
局部刷新:
NSIndexpath *path = [NSIndexPath indexPathForRow:row inSection:0];
[self.tableView reloadRowAtIndexPaths:@[path] withRowAnimation:枚举];
3.4、设置tableView尾部显示的控件(tableFootView的宽度永远是tableView的宽度),tableView只需设置高度,它永远处于tableView的底部,而且它的X值永远为0,y值永远等于tableView的高度减掉自己的高度。
3.5、如果你想要把某个数据显示到某个界面上,那么首先你要拿到这个界面
3.6、加载xib文件的两种方法:
1、[NSBundle mainBundle] loadNibNamed:
2、UINib *nib = [UINib nibWithNibNamed:
[[nib instantiateWithOwer:nil options:nil] lastObject]
3.7、延迟效果:dispatch_after(开头的方法
3.8、当一个对象从xib中创建初始化完毕时就会调用一次
— (void)awakeFromNib方法
3.9、iOS中的分割线使用UIView做出来的,把它的高度或者宽度设为1,在修改透明度。
4.0、协议名称书写规范:1.控件名+Delegate
2.方法名以类名开头:注意一定要把自己作为参数传进去
3、代理方法修饰符一般写为optional
4、调用代理的方法时:先用方法respondToSelector判断代理有没有实现方法再调 用。
4.1、在xib和storyboard中只能描述我们的控件长什么样子,但是要给它里面加载一些东西的话,也就是对它的属性和行为进行些操作,必须要有个类去管理它,所以必须在它的右边的class类型里写上管理他的类名,这样的话才能够将xib和storyboard中的控件连线到它管理的类中,这样就可以通过这个类拿到xib和sortyboard中控件,按需要修改它的的属性并给他一些行为。
默认情况下,xib和storyboard不能执行代码,所以间接用一个类管理它后才可以实现。
在storyboard中只能在UIView中直接拖入子控件,其他控件的话加入子控件只能通过代码
所有的控件都继承自UIView,所有控件都有尺寸,位置,背景色,父控件superView和子控件subviews属性,父控件(父类)是唯一的,子控件subviews是一个数组,子控件不是唯一的。
父控件被销毁后,父控件中指向子控件的数组属性subviews也就跟着销毁,所以所有的子控件也全部跟着销毁。
4.2、自定义cell中xib用于控件个数和位置固定的场合。
4.3重要的延迟一段时间后执行一段代码(做事情)的方法:
performSelector:@selecor(方法名) withObject:一般为空 afterDelay:(NSTimeInterval)时间间隔