iOS7应用开发7:自定义视图、手势操作

简介: 1、视图: #屏幕上表示某一个矩形区域;某个视图只能有一个父视图,但是可能有多个子视图; #UIWindow:屏幕视图,在整个视图结构体系的最上层,仅适用于ios应用; #添加视图的函数: - (void)addSubview:(UI...

1、视图:

#屏幕上表示某一个矩形区域;某个视图只能有一个父视图,但是可能有多个子视图;

#UIWindow:屏幕视图,在整个视图结构体系的最上层,仅适用于ios应用;

#添加视图的函数:

- (void)addSubview:(UIView *)aView;

- (void)removeFromSuperview;

#在MVC结构中,视图结构体系最上层的是属性@property view;

#初始化UIView:awakeFromNib函数,或{[UIView alloc] init];

#视图的坐标体系:参见另一篇博文http://blog.sina.com.cn/s/blog_520811730101mixf.html;在坐标体系中的以点而不是像素为单位;

@property CGFloat contentScaleFactor返回每个点所包含的的像素数目;

#创建视图:在nib文件中拖入视图对象,并修改其class属性;或通过代码创建(alloc, init);

#自定义视图:新建一个类继承自UIView,重写下面的方法:

- (void) drawRect:(CGRect) aRect;
该函数为系统调用,不应由手动调用;若需要更新视图内容,则调用下列函数:

- (void)setNeedsDisplay;
- (void)setNeedsDisplayInRect:(CGRect)aRect;
以上两个函数将负责调用drawRect。

实现drawRect:直接调用Core Graphics Framework(此为C语言API集合),或者使用UIBezierPath类;


#使用UIBezierPath绘图:

(1)定义一个path:

UIBezierPath *path = [[UIBezierPath alloc] init];
(2)移动起点,向终点绘制:

[path moveToPoint:CGPointMake(75,10)];
[path addLineToPoint:CGPointMake(75,10)];
[path addLineToPoint:CGPointMake(75,10)];
(3)关闭path:

[path closePath];
(4)设置绘图属性:
[[UIColor greenColor] setFill];
[[UIColor redColor] setStroke];

在实际使用中可以在设置前后分别调用以下方法,则可以去除方法与绘图上下文的相互影响:

CFContextSaveGState(ctxt);
[[UIColor greenColor] setFill];
//draw something...
CGContextRestoreGState(ctxt);

(5)设置线宽等属性;详见UIBezierPath的文档;

(6)clip方法:
[roundedRect addClip]; //将绘制内容限制在roundedRect范围内。
#UIView的透明度:几个影响透明度的因素:颜色UIColor的alpha值;UIView的backgroundColor属性;@property BOOL opaque(若设置透明度,则该属性必须设为NO);
可以设置@property (nonatomic) BOOL hidden属性将视图隐藏;

#绘制文本:

容器——UILable;drawRect中绘制文本可采用NSAttributedString。[test drawAtPoint:point];

文本所占大小:CGSize textSize = [text size];

#绘制图像:

容器——UIIMageView;

来源:可使用工程资源目录下的图像、给定url标识的图像或者有CGContext函数绘制;

#在视图边界改变的时候:

默认情况下不进行重新绘制,而是对内容进行拉伸、压缩或者移动;可以设置@property (nonatomic) UIViewContentMode contentMode进行设置;


2、手势识别器UIGestureRecognizer:这个类是个抽象类,必须派生才可实例化;使用时将gesture recognizer添加到视图(通常由view controller完成),并且实现handle方法处理手势操作(由UIView自身提供);

UIGestureRecognizer提供三个方法实现手势识别器同其target的联系:

-(CGPoint)translationInView:(UIView *)aView;//表明手势识别器移动的位移
-(CGPoint)velocityInView:(UIView *)aView;//
-(void)setTranslation:(CGPoint)translation inView:(UIView *)aView;
该类提供属性@property (readonly) UIGestureRecognizerState state说明识别器的状态,可能值有Possible/Recognized/Began/Failed/Changed/Ended/Cancelled等

目录
相关文章
|
iOS开发
iOS开发-加在透明视图上的控件会透明
iOS开发-加在透明视图上的控件会透明
112 0
|
iOS开发
ios贝塞尔曲线表格视图
x轴和y轴都是可自定义,曲线的值也是对应的值
73 0
ios贝塞尔曲线表格视图
|
前端开发 小程序 数据处理
iOS上传图片视图的封装:用法 【下篇】
iOS上传图片视图的封装:用法 【下篇】
221 0
iOS上传图片视图的封装:用法 【下篇】
|
前端开发 API 数据处理
iOS小知识:封装上传图片视图(支持删除和添加)
iOS小知识:封装上传图片视图(支持删除和添加)
197 0
iOS小知识:封装上传图片视图(支持删除和添加)
|
安全 iOS开发
iOS 筛选视图的隐藏方案
iOS 筛选视图的隐藏方案
142 0
iOS 筛选视图的隐藏方案
|
监控 iOS开发
iOS视图置顶方案
iOS视图置顶方案
134 0
iOS视图置顶方案
|
API 开发工具 iOS开发
iOS视图置顶的应用:适配iOS12系统上日期控件被筛选视图遮挡问题
iOS视图置顶的应用:适配iOS12系统上日期控件被筛选视图遮挡问题
175 0
iOS视图置顶的应用:适配iOS12系统上日期控件被筛选视图遮挡问题
|
开发工具 iOS开发 git
iOS订单折扣视图应用于购物车界面(支持添加/删除/选择折扣)
iOS订单折扣视图应用于购物车界面(支持添加/删除/选择折扣)
130 0
iOS订单折扣视图应用于购物车界面(支持添加/删除/选择折扣)
|
iOS开发
iOS支持展开折叠的弹出菜单(水平方向弹出菜单视图) 【修订版】
iOS支持展开折叠的弹出菜单(水平方向弹出菜单视图) 【修订版】
401 0
iOS支持展开折叠的弹出菜单(水平方向弹出菜单视图) 【修订版】
|
iOS开发
iOS支持展开折叠的弹出菜单(水平方向弹出菜单视图)
iOS支持展开折叠的弹出菜单(水平方向弹出菜单视图)
197 0
iOS支持展开折叠的弹出菜单(水平方向弹出菜单视图)