26
2012

使用CSS3硬件加速的拖动小示例

示例如下图:

 

可直接访问:http://easymorse.googlecode.com/svn/tags/WebBook-0.2/test.html,需要注意只能跑在有webkit浏览器的触摸设备上。

为什么会抖动

在iPad上,如果用传统的改变html元素的左上顶点坐标(left、top),会有可被用户察觉的抖动现象。

这是因为,浏览器不确定是否要使用GPU硬件加速,也许这个操作只是移动一个元素到某个位置。

这种指定顶点的做法,在鼠标操作设备上不会出现抖动现象,是因为鼠标的轨迹是连续的。而触摸设备的手指移动是离散的。

另外,浏览器是假定可用可不用硬件加速的地方,就不用硬件加速,这是因为,对于移动设备来说,硬件加速更消耗电池。

使用CSS3的translate,浏览器将使用硬件加速,手指移动的坐标离散量,会自动形成动画,这样看起来就不会抖动了。

另外,translate的另一个好处是和css布局无关,坐标是针对元素自己的,也就是从(0,0)开始。 Continue Reading »

12
2012

iOS5的自定义容器控制器特性简单使用

iOS5支持开发自定义的容器控制器。比如下面这样:

在本示例中,屏幕的上半部分是嵌套在根控制器中的导航控制器(UINavigationController)。即:

Continue Reading »

11
2012

又一个iOS屏幕切换的示例

iOS屏幕变换的处理,已经提到了通过通知来处理屏幕视图的自动翻转。

这里再写一个。

蓝色的子视图,在翻转的情况下触发界面大小的调整。

Continue Reading »

9
2012

iOS中的设计模式:target-action

Target-action,目标-动作模式。在iOS界面开发中十分常用。

使用ARC编写简单的Xcode项目中的示例来说:

Continue Reading »

8
2012

Mac切换应用窗口

Mac下的应用,如果想切换程序窗口,有很多办法,而且比windows应该多和方便。

这里总结一下,如果只是应用的窗口切换,可以快捷键:command+tab

如果是相同应用的多个窗口,比如safari,你开了两个窗口,可以通过菜单来切换:

Continue Reading »

8
2012

使用NSCondition实现生产者消费者问题

使用NSCondition,类似Java中的wait,notify机制,可以实现多线程的同步,即,可实现生产者消费者问题。

基本思路是,首先要创建公用的NSCondition实例。然后:

  • 消费者取得锁,取产品,如果没有,则wait,这时会释放锁,直到有线程唤醒它去消费产品;
  • 生产者制造产品,首先也是要取得锁,然后生产,再发signal,语义等同Java的notify,这样可唤醒wait的消费者。

示例代码如下:

Continue Reading »

8
2012

使用runloop阻塞线程的正确写法

runloop可以阻塞线程,等待其他线程执行后再执行。

比如:

@implementation ViewController{
    BOOL end;
}

– (void)viewDidLoad
{
    [super viewDidLoad]; 
    NSLog(@”start new thread …”);
    [NSThread detachNewThreadSelector:@selector(runOnNewThread) toTarget:self withObject:nil];    
    while (!end) {
        NSLog(@”runloop…”);
        [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];
        NSLog(@”runloop end.”);
    }
    NSLog(@”ok.”);
}
-(void)runOnNewThread{
     NSLog(@”run for new thread …”);
    sleep(1);
    end=YES;
    NSLog(@”end.”);
}

但是这样做,运行时会发现,while循环后执行的语句会在很长时间后才被执行。

Continue Reading »

5
2012

使用ARC编写简单的Xcode项目

使用ARC编写全新的项目是很容易的。下面用一个简单的项目来说明使用方法。

先看写好后的样子:

    

代码很简单。有两个视图,左边视图提交切换到右边视图,右边视图点返回回到左边视图。

首先是创建项目,使用创建项目向导,这里创建一个单视图应用(Single View Application)。

Continue Reading »

4
2012

ObjC属性使用的一个最佳实践

 

比如,一般情况下,头文件里是这样写:

在m文件中:

Continue Reading »

4
2012

使用Xcode4.2可把变量直接写在m文件中

以前,实例变量必须写在文件中,如这样:

@interface Person : NSObject{

    NSString *name;
}

刚开始这样用的时候,觉得这不和常理啊,实例变量,为什么要放在公共的h文件中呢,应该放在实现的文件中才对。

Xcode4.2默认使用llvm做编译,带来了一些改变,其中,就是可以在m文件中声明实例变量:

@implementation Person{

    NSString *name;
}

PDF    发送文章为PDF   
第1页,共88页12345678910...后 »