day15
回顾:
1.绘图:
编写位置:重写UIView的drawRect{}方法
调用:系统自动调用
绘制顺序:先绘制父视图中的背景属性----》调用父视图中的drawRect方法-------》绘制各个子视图的背景------》调用各个子视图的drawRectf方法
重绘:调用setNeedDisplay方法
2 UIBezierPath贝塞尔曲线
是对CoreGraphics中的一部分API的封装,可以用于绘制曲线 矩形 椭圆以及对变形等
绘制步骤:
a.移动到起点 开始绘制路径
b.设置线条的宽度 线头 线条的样式
c.设置描边和填充的颜色
d.实际的描边Stroke或者填充Fill
3.绘制字符串
使用NSString中的方法:
drawAtPoint
drawAtRect
注意:根据字符串的长度计算在指定了宽度以后需要的高度
4 绘制图片
使用UIImage中的方法
drawAtPoint
drawAtRect
注意:可以搭配UIBezierPath的addClip功能实现图片边缘的自定义
Today:贴图和美化
1.IOS设备的种类
1.1 设备分辨率和坐标的大小
Retina设备 |
分辨率 |
点(坐标) |
iPhone4/4s |
640 X 960 |
320 X 480 @2x |
iPhone5/5s/5c |
640 X 1136 |
320 X 568 @2x |
new iPad,iPad4 iPad Air,iPad mini2 |
2048 X 1536 |
1024 X 768 @2x |
iPhone6 |
750 X 1334 |
375 X 667 @2x |
iPhone6 Plus |
1242 X 2208 |
414 X 736 @3x |
1.2Retina屏设备对图片的处理
.程序中的图片:在不同的尺寸下的图片上添加@2X或者@3X这样的标示即可,系统可以自动识别。
2. 9切片技术
2.1 为什么使用9切片技术
可以用代码实现基于一个简单的图片 产生不同尺寸的图片的一种手段
2.2 原则:
4个角不变
上下两边横向拉伸或者复制
左右两边纵向拉伸或者复制
中间横向纵向拉伸或者复制
两种模式:Tile切片复制(默认模式)
Stretch切片拉伸
2.3 应用场景:
消息栏 新闻栏 各种框的美化 按钮背景 Cell背景等
2.4 实现方法:
a.使用代码方式:
UIImage *newImage=[imageresizableImageWithCapInsets:UIEdgeInsetsMake(10,12,10,12)resizingMode:UIImageResizingModeStretch];
B.使用storyBoard的方式实现
图片拖拽到Xcassets中 选中图片进行操作
3. 按钮的贴图美化
3.1 UIButton区分状态设置图片
Normal 正常状态 没有点击的时候
Highlighted 高亮状态 (用户按下后的状态)
Disable enabled=NO 按钮不可用的状态
Selected selected=YES 按钮被点击后的状态 需要使用代码实现
setSelected:设置
4 滑块的贴图美化
UISlider
setMaximage:为划过的部分
setMinimage:划过的部分
setThumbimage:滑块部分
5.tintColor整体修改颜色
统一管理一个视图中的所有子视图和子视图推出的视图的颜色
批量修改一些视图的颜色
颜色受控制的因素:
拥有XXXTintColor属性 如UISwitch
没有XXXTintColor 受从UIView中继承来的tintColor影响
self.window,tintColor 影响整个应用的风格 除非某一个属兔特别设置了自己的tintColor颜色
6.UIAppearance某一部分控件
遵守此协议的对象 可以批量设置某种控件的外观(颜色贴图等)
获取方式
+(instancetype)appearance;
使用方式
拿到此对象后,通过这个对象设置背景、颜色等来批量设置某一类控件的外观
[UISliderappearance]setTintColor:[UIColor redColor]]
7UINavigationBar美化
设置NavagationBar的颜色
.barTintColor设置bar的全局颜色
设置是否透明
.translucent
给NavigationBar贴图
.setBackgroundImage:forBarMetrice
[naviBarsetBackgroundImage:[UIImage imageNamed:@"NavigationBarDefault"]forBarMetrics:UIBarMetricsDefault];//设置竖屏的显示效果
[naviBarsetBackgroundImage:[UIImageimageNamed:@"NavigationBarLandscapePhone"]forBarMetrics:UIBarMetricsLandscapePhone]//设置横屏的显示效果
设置返回按钮的图片
naviBar.backIndicatorImage= [UIImage imageNamed:@"back_btn"];
naviBar.backIndicatorTransitionMaskImage =[UIImageimageNamed:@"back_btn”];//在推出的时候需要过度一下
设置标题栏的文字字体:
naViBar.titleTextAttribute=@{
NSFontAttributeName:[UIFontboldSystemFontOfSize:24],
NSForegroundColorAttributeName:[UIColorredColor]
};
设置标题为任意视图:
UIStepper*stepper=[[UIStepper alloc]init];
self.navigationItem.titleView=stepper;
设置状态栏的风格
//重写方法 用于设置状态栏的风格
-(UIStatusBarStyle)preferredStatusBarStyle{
returnUIStatusBarStyleLightContent;
}
是否显示状态栏
-(bool)prefersStatusBarHidden{
returnYES;
}
8 UITableViewCell的背景设置 贴图
实现步骤:
a.修改TableView的分割线为None
b.修改TableView的背景色为clearColor
c.Cell.backgroundView=[[UIImageViewalloc]initWithImage:[UIImage imageNamed:@“list”]];
Cell.selectedBackgroundView=[[UIImageViewalloc]initWithImage:[UIImage imageName:@“listSelect”]]