编写最简单的iOS图形应用
这个内容和编写最简单的Mac图形应用是类似的,本文针对iOS。之前写iOS视图代码,基本是手工代码实现的。实际上IB是个很好的工具。以下演示怎样通过IB编写最简单的iOS应用。 应用实现的效果: 点击提交,会打印日志: 2011-05-31 14:38:46.536 iPhoneDemo[16420:207] User name: zhangsan 发送文章为PDF
这个内容和编写最简单的Mac图形应用是类似的,本文针对iOS。之前写iOS视图代码,基本是手工代码实现的。实际上IB是个很好的工具。以下演示怎样通过IB编写最简单的iOS应用。 应用实现的效果: 点击提交,会打印日志: 2011-05-31 14:38:46.536 iPhoneDemo[16420:207] User name: zhangsan 发送文章为PDF
实现了一个最简单的应用。目的是理解Mac/iOS的Interface Builder(IB)使用机制。 应用只有一个窗口,窗口中有一个文本框,一个按钮。在文本框中输入文字,点击提交,控制台窗口中会打印输入的文字。 日志引用编写最简单的iOS图形应用 发送文章为PDF
Category是ObjC语言中的扩展机制之一,另一个为Protocol。 Category提供一种为某个类添加方法而又不必编写子类的途径。 假设有这样一个类CarInfo: #import <Foundation/Foundation.h> @interface CarInfo : NSObject { } -(void)sayCarBrand; @end @implementation CarInfo -(void) sayCarBrand{ NSLog(@"Car brand: Golf"); } @end 发送文章为PDF
这是在ios开发中常见的功能。即,touch移动事件,是移动到当前视图的子视图中,还是移动到当前视图以外了。 办法是,继承UIView,覆盖touchesMoved方法: – (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{ UITouch *touch=[touches anyObject]; if (![self pointInside:[touch locationInView:self] withEvent:nil]) { NSLog(@"touches moved outside the view"); }else { UIView *hitView=[self hitTest:[[touches anyObject] locationInView:self] withEvent:nil]; if (hitView==self) { NSLog(@"touches moved in the view"); }else{ NSLog(@"touches moved in the subview"); } [...]
通过xcode编写代码,代码的头部会有类似下面的内容: 在xcode 3.2.x之前,需要命令行设置变量。比如《objective-c基础教程》第七章中提到的方式。 之后,可以通过xcode的配置项操作了。操作步骤见下面图示: 发送文章为PDF
在java语言里,可以通过如下代码来实现加载类的时候执行对类的操作,一般叫:类初始块,或者,类加载块。比如: public class MyClass{ static{ …… } } 在objc语言里,对应的机制是,类方法,load和initialize。 比如: #import "Constants.h" @implementation Constants + (void)initialize{ NSLog(@"init constants >>>>>>>>>>"); } + (void)load{ NSLog(@"load constants >>>>>>>>>>"); } @end 两个方法有一些不同。 发送文章为PDF
在在objc项目中使用常量的最佳实践中的常量,是指可用于全局的常量。如果只是在文件内部使用,不希望之外的地方能访问到,就需要: #import "BasicDemosViewController.h" #import "Constants.h" NSString * const kMyURL=@"http://marshal.easymorse.com"; @implementation BasicDemosViewController // Implement loadView to create a view hierarchy programmatically, without using a nib. – (void)loadView { NSLog(@"load view: %@, %@",kInitURL,kMyURL); } 发送文章为PDF
之前,在在objc项目中使用常量中,使用c的预处理#define来设置常量。比如,可以做个头文件,然后在需要的类文件中import,使用常量。 但这不是最佳实践。这样做可能是最好的方式,首先在比如叫Constants.h的头文件中: #import <Foundation/Foundation.h> extern NSString * const kInitURL; @interface Constants : NSObject { } @end 这里使用到extern c关键字,表示这个变量已经声明,只是引用。const关键字表示变量是常量,不可修改。 在objc的约定里,常量也是大小写混排的驼峰命名规则,首字母小写,另外,第一个字母是k。 然后,在Constants.m文件中: #import "Constants.h" NSString * const kInitURL = @"http://marshal.easymorse.com"; @implementation Constants @end 在这里给常量kInitURL赋值。 如何使用常量?只需在所需的m文件引入Constants头文件,下面是使用示例: #import "BasicDemosViewController.h" #import "Constants.h" @implementation BasicDemosViewController // Implement loadView to create a view hierarchy programmatically, without using a nib. – (void)loadView [...]
svn可以还原到以前版本,一般来说有两种情况: 修改,但尚未提交,还原是取消当前修改,还原到主干的上一个版本 修改并提交了,需要还原到之前的指定版本 这里介绍的是第一种情况。其实在eclipse和windows环境下都有图形工具可以很容易的实现。以至于我都记不住命令。 要感谢xcode糟糕的svn支持,帮助我们不在命令行方面能力退化。 我在xcode环境下有关svn的一切操作都使用命令行。 svn revert –recursive . 该命令可在当前目录下,递归还原版本到主干的最后一个版本。 发送文章为PDF
ios里的UITableView,功能是很强大的。但是没有Android类似Grid的效果。比如类似解决ListView滚动卡的问题。因为UITableView的每行只支持显示一个视图。如果细粒度的比如类似gallery的效果,就需要自己解决了。 最近写的一个类似效果的原型: 主要解决了: 如何生成grid的样式 图片的阴影效果 发送文章为PDF
Patagonia Theme designed by Wp Themes Planet and proudly powered by WordPress