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

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等

时间: 2024-10-31 19:28:52

iOS7应用开发7:自定义视图、手势操作的相关文章

如何开发Spring自定义视图和视图解析器

本文将通过一个示例来介绍如何开发 Spring 自定义视图和视图解析器,来显示后缀名为 SWF 的视图,并提供一个简单的注册机制,为特定后缀名的视图注册相应的视图解析器. 什么是 Spring 视图和视图解析器 Spring MVC(Model View Controller)是 Spring 中一个重要的组成部分,而 Spring 视图和视图解析器则是 Spring MVC 中的组成部分.在介绍 Spring 视图和视图解析器前,我们先了解下在 Spring MVC 框架中,一个 Web 请求

iOS7应用开发5、视图控制器View Controller及其生命周期

1.UITextView: 该类与Label类类似,可显示多行,可以编辑内容,可以滚动查看内容: 包含属性NSTextStorage *textStorage,该类是NSMutableAttributedString的基类:修改该属性可以自动更新UITextView的内容: 包含属性UIFont *font,用于设置所有字符的字体: NSTextContainer *textContainer和NSLayoutManager *layoutManager属性,用于设置文本的其他一些属性: 2.视

IOS 七种手势操作(拖动、捏合、旋转、点按、长按、轻扫、自定义)详解及实例代码_IOS

IOS 七种手势操作 今天为大家介绍一下IOS 的七种手势,手势在开发中经常用到,所以就简单 通俗易懂的说下, 话不多说,直接看代码: 1.UIGestureRecognizer 介绍 手势识别在 iOS 中非常重要,他极大地提高了移动设备的使用便捷性. iOS 系统在 3.2 以后,他提供了一些常用的手势(UIGestureRecognizer 的子类),开发者可以直接使用他们进行手势操作. UIPanGestureRecognizer(拖动) UIPinchGestureRecognizer

IOS手势操作(拖动、捏合、旋转、点按、长按、轻扫、自定义)_IOS

下面通过图文并茂的方式给大家分享下IOS手势操作(拖动.捏合.旋转.点按.长按.轻扫.自定义)的相关内容. 1.UIGestureRecognizer 介绍 手势识别在 iOS 中非常重要,他极大地提高了移动设备的使用便捷性. iOS 系统在 3.2 以后,他提供了一些常用的手势(UIGestureRecognizer 的子类),开发者可以直接使用他们进行手势操作. UIPanGestureRecognizer(拖动) UIPinchGestureRecognizer(捏合) UIRotatio

Android开发之自定义View(视图)用法详解_Android

本文实例讲述了Android开发之自定义View(视图)用法.分享给大家供大家参考,具体如下: View类是Android的一个超类,这个类几乎包含了所有的屏幕类型.每一个View都有一个用于绘图的画布,这个画布可以进行任意扩展.在游戏开发中往往需要自定义视图(View),这个画布的功能更能满足我们在游戏开发中的需要.在Android中,任何一个View类都只需重写onDraw 方法来实现界面显示,自定义的视图可以是复杂的3D实现,也可以是非常简单的文本形式等. 为了实现自定义View,需要创建

Android游戏开发:实现手势操作切换图片的实例_Android

       对于Android 的手势不光在软件中会经常用到,比如浏览器中的翻页,滚动页面等等;当然其实在我们开发Android游戏的时候加上了Android手势操作更会让游戏增加一个亮点,比如一般的CAG.PUZ等类型的游戏选择关卡.简单背景的移动等,都可以使用手势来操作即可,类似前段时间很火的<愤怒的小鸟>,小鸟这个游戏确实不错,我所看到的唯一的亮点是这款游戏的创意!说实话,现在的游戏没有做不出来的只有想不出来的好创意.回到话题来,那么下面我们来了解下什么是Android 手势!    

Android开发之自定义View(视图)用法详解

本文实例讲述了Android开发之自定义View(视图)用法.分享给大家供大家参考,具体如下: View类是Android的一个超类,这个类几乎包含了所有的屏幕类型.每一个View都有一个用于绘图的画布,这个画布可以进行任意扩展.在游戏开发中往往需要自定义视图(View),这个画布的功能更能满足我们在游戏开发中的需要.在Android中,任何一个View类都只需重写onDraw 方法来实现界面显示,自定义的视图可以是复杂的3D实现,也可以是非常简单的文本形式等. 为了实现自定义View,需要创建

Spring自定义视图和视图解析器简介及开发

Spring 视图和视图解析器简介 什么是 Spring 视图和视图解析器 Spring MVC(Model View Controller)是 Spring 中一个重要的组成部分,而 Spring 视图和视图解析器则是 Spring MVC 中的组成部分.在介绍 Spring 视图和视图解析器前,我们先了解下在 Spring MVC 框架中,一个 Web 请求所需经历 的六个阶段: 请求会首先被 Spring MVC 的前端请求分发器(Dispatcher)拦截.该拦截器是一个 Servlet

UWP开发入门(十五)——在FlipView中通过手势操作图片

原文:UWP开发入门(十五)--在FlipView中通过手势操作图片 本篇的最终目的,是模拟系统的照片APP可以左右滑动,缩放图片的操作.在实现的过程中,我们会逐步分析UWP编写UI的一些思路和技巧. 首先我们先实现一个横向的可以浏览图片的功能,也是大部分APP中的实现.最简单的方式是使用FlipView,再将FlipView的ItemTemplate设置成Image.大体代码如下: <FlipView ItemsSource="{Binding Photos,Mode=OneTime}&