如何将图片保存到iOS自带的Photo Album中呢?
这是调用api生成的当前绘制的图形。
代码很简单:
UIImageWriteToSavedPhotosAlbum(drawImage.image, nil, nil, nil);
这里drawImage是一个UIImageView。
日志引用
在在界面中显示文本内容中写入UITextView的文本,如何保存?
可以使用NSUserDefaults:
NSUserDefaults *textData;
该实例实际上是NSDirectory,保存键值对。在使用中,首先检查是否有该键值对,如果有赋值给TextView的text属性。
- (void) initTextView{
textData=[NSUserDefaults standardUserDefaults];
textview=[[UITextView alloc] initWithFrame:CGRectMake(550, 140, 400, 300)];
textview.backgroundColor = [UIColor colorWithWhite:0 alpha:0];
textview.textColor = [UIColor blackColor];
textview.font = [UIFont fontWithName:@"Arial" size:24];
textview.editable = YES;
textview.scrollEnabled = YES;
textview.delegate=self;
if ([textData objectForKey:@"page12.text.data"]!=nil) {
textview.text=[textData objectForKey:@"page12.text.data"];
}
[self addSubview:textview];
}
iOS有单行和多行显示文本的控件对象:
- UITextField:简单的单行
- UITextView:可滚屏的多行
在这里使用的是多行文本,即UITextView。
贝塞尔曲线,可以通过三个点,来确定一条平滑的曲线。在计算机图形学应该有讲。是图形开发中的重要工具。
实现的是一个图形做圆周运动。不过不是简单的关键帧动画那样,是计算出了很多点,当然还是用的关键帧动画,即使用CAKeyframeAnimation。有了贝塞尔曲线的支持,可以赋值给CAKeyframeAnimation 贝塞尔曲线的Path引用。
iOS有时候需要判断是否touch到某个图的区域中。这里做了个小示例,通过CGPath创建一个区域,区域是由路径做两点间线段并闭合成的区域,比如这里创建了一个简单的矩形。然后就可以用CGPath相关函数判断点是否在区域里了。
- (void)viewDidLoad {
[super viewDidLoad];
CGMutablePathRef pathRef=CGPathCreateMutable();
CGPathMoveToPoint(pathRef, NULL, 4, 4);
CGPathAddLineToPoint(pathRef, NULL, 4, 8);
CGPathAddLineToPoint(pathRef, NULL, 10, 4);
CGPathAddLineToPoint(pathRef, NULL, 4, 4);
CGPathCloseSubpath(pathRef);
CGPoint point=CGPointMake(5,7);
CGPoint outPoint=CGPointMake(5,10);
if (CGPathContainsPoint(pathRef, NULL, point, NO)) {
NSLog(@"point in path!");
}
if (!CGPathContainsPoint(pathRef, NULL, outPoint, NO)) {
NSLog(@"outPoint out path!");
}
日志引用
参考了:http://iphonedevelopertips.com/xcode/how-to-fix-subversion-in-xcode-3.html
需要在~/.subversion/config文件中设置一下。
找到:
# global-ignores
在下面添加:
global-ignores = build *~.nib *.so *.pbxuser *.mode* *.perspective*
因为build目录是不需要提交的,是构建出来的文件。另外,还有后缀是mode1v3和pbxuser等文件,这是Xcode用户文件。另外一些也是临时文件或者构建出来的文件。
Xcode的SVN功能,和Eclipse中的subclipse或者windows下的tortoiseSVN比较起来功能还差很多。
我是索性不用的,直接用命令行。我看有的朋友是用subclipse,其实也挺好,不过,为了使用SVN功能要单独开一个耗费资源的Eclipse。
但是,不论使用什么SVN工具,都会遇到Xcode固有的问题,即project.pbxproj文件的提交冲突问题。
project.pbxproj文件里面包含了构建过程所需的所有文件,如果你在项目目录下增加了新文件,比如没有通过Xcode,该文件就不在project.pbxproj文件中,就不会生成到app中。同理,如果你从SVN中更新到其他项目成员增加的文件,而没有更新project.pbxproj文件(或者该成员根本就没有提交这个文件),则也会出现相同的现象。
翻译学习了一下Apple官方的《Getting started with Graphics and Animation》,原文见这里。
概述
iOS包括一些框架用于图形和动画:
UIKit包括一个objc的库,用于用户界面和2D绘图,也可以通过UIKit做用户界面动画。
Core Graphics是基于C的API,用于绘制矢量图形、位图和PDF内容。(注意,Quartz 2D是指2D画图引擎的术语,Core Graphics是框架的名称。这两个术语是同义词。
Core Animation是基于objc的API,用于增加用户图形界面的平滑效果和动态的反馈
OpenGL ES是OpenGL的移动版本,用于在移动设备上高性能的2D和3D绘图。苹果的OpenGL ES框架包括EAGL,这是一种基于objc的API,它在Core Animation层和UIKit视图上集成了OpenGL ES的渲染功能。
可使用UIKit实现典型的用户界面图形操作,比如绘制图片,设置颜色,填充矩形。另外,图形的转换(Transaction),比如移动、缩放和反转等,平滑的从一个视图或者屏幕过渡(Transition)到另外一个,以及在一个视图或者层中的动画内容。
当需要更强大的2D绘图能力,需要使用Core Graphics框架。它是绘制矢量图、线、形状、模式、渐变、图形,甚至PDF文档的主力。更高层的框架,比如UIKit,使用Core Graphics。
Core Animation是UIKit框架用于层以及过渡的编程接口。大多数时候,开发者不需要直接使用Core Animation。除非当应用中需要细粒度的动画控制。
当开发游戏或者其他需要依赖GPU的高级图形能力时,需要用到OpenGL ES。