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等

目录
相关文章
|
3月前
|
搜索推荐 数据管理 定位技术
iOS应用开发中有多种主流框架
iOS应用开发中有多种主流框架
274 60
|
3月前
|
Android开发 Swift iOS开发
深入探索iOS与Android操作系统的架构差异及其对应用开发的影响
在当今数字化时代,移动设备已经成为我们日常生活和工作不可或缺的一部分。其中,iOS和Android作为全球最流行的两大移动操作系统,各自拥有独特的系统架构和设计理念。本文将深入探讨iOS与Android的系统架构差异,并分析这些差异如何影响应用开发者的开发策略和用户体验设计。通过对两者的比较,我们可以更好地理解它们各自的优势和局限性,从而为开发者提供有价值的见解,帮助他们在这两个平台上开发出更高效、更符合用户需求的应用。
|
4月前
|
Android开发 Swift iOS开发
iOS和安卓作为主流操作系统,开发者需了解两者差异以提高效率并确保优质用户体验。
【10月更文挑战第1天】随着移动互联网的发展,智能手机成为生活必需品,iOS和安卓作为主流操作系统,各有庞大的用户群。开发者需了解两者差异以提高效率并确保优质用户体验。iOS使用Swift或Objective-C开发,强调简洁直观的设计;安卓则采用Java或Kotlin,注重层次与动画。Swift和Kotlin均有现代编程特性。此外,iOS设备更易优化,而安卓需考虑更多兼容性问题。iOS应用仅能通过App Store发布,审核严格;安卓除Google Play外还可通过第三方市场发布,审核较宽松。开发者应根据需求选择合适平台,提供最佳应用体验。
97 3
|
3月前
|
开发框架 前端开发 Android开发
探索安卓和iOS应用开发中的跨平台解决方案
【10月更文挑战第42天】在移动应用开发的广阔天地中,安卓和iOS系统如同两座巍峨的山峰,分别占据着半壁江山。开发者们在这两座山峰之间穿梭,努力寻找一种既能节省资源又能提高效率的跨平台开发方案。本文将带你走进跨平台开发的世界,探讨各种解决方案的优势与局限,并分享一些实用的代码示例,助你在应用开发的道路上更加游刃有余。
|
3月前
|
Android开发 Swift iOS开发
探索iOS与安卓应用开发的差异性
探索iOS与安卓应用开发的差异性
57 2
|
4月前
|
Java Android开发 Swift
掌握安卓与iOS应用开发:技术比较与选择指南
在移动应用开发领域,谷歌的安卓和苹果的iOS系统无疑是两大巨头。它们不仅塑造了智能手机市场,还影响了开发者的日常决策。本文深入探讨了安卓与iOS平台的技术差异、开发环境及工具、以及市场表现和用户基础。通过对比分析,旨在为开发者提供实用的指导,帮助他们根据项目需求、预算限制和性能要求,做出最合适的平台选择。无论是追求高度定制的用户体验,还是期望快速进入市场,本文都将为您的开发旅程提供有价值的见解。
|
4月前
|
物联网 vr&ar Android开发
掌握安卓与iOS应用开发:核心技术与未来趋势
本文深入探讨了安卓和iOS应用开发的核心技术,包括开发环境、主要编程语言、常用框架以及性能优化技巧。同时,文章还展望了两大平台未来的发展趋势,如人工智能、增强现实和物联网的集成,为开发者提供全面的技术参考和发展指引。
|
4月前
|
安全 Android开发 iOS开发
深入解析:安卓与iOS的系统架构及其对应用开发的影响
本文旨在探讨安卓与iOS两大主流操作系统的架构差异,并分析这些差异如何影响应用开发的策略和实践。通过对比两者的设计哲学、安全机制、开发环境及性能优化等方面,本文揭示了各自的特点和优势,为开发者在选择平台和制定开发计划时提供参考依据。
77 4
|
3月前
|
开发工具 Android开发 Swift
探索iOS与安卓应用开发的异同点
【10月更文挑战第24天】本文通过比较iOS和安卓开发环境,旨在揭示两大移动平台在开发过程中的相似性与差异性。我们将探讨开发工具、编程语言、用户界面设计、性能优化及市场分布等方面,以期为开发者提供全面的视角。通过深入浅出的分析,文章将帮助读者更好地理解每个平台的独特之处及其对应用开发的影响。
|
5月前
|
开发工具 Android开发 iOS开发
掌握安卓与iOS应用开发:关键技术与未来展望
本文深入探讨了安卓和iOS平台下的应用开发技术,重点比较了两大平台的架构、开发工具和市场策略。通过分析最新的技术趋势和开发者社区的反馈,文章为读者提供了一个全面的对比视角,旨在帮助开发者做出更明智的平台选择和开发决策。

热门文章

最新文章