码迷,mamicode.com
首页 > 移动开发 > 详细

iOS绘图例2:增加Undo/Redo功能

时间:2014-09-26 13:15:29      阅读:308      评论:0      收藏:0      [点我收藏+]

标签:http   io   os   java   ar   for   art   cti   on   

  1. 在工程中添加Undo、Redo的按钮图片,每个按钮都有可用和不可用两种状态图片,共4个图片。

  2. 在StoryBoard中添加两个按钮,设置图片属性和自动布局约束。

  3. 按住 Ctrl 拖动按钮到 ViewController.mm 中,创建属性变量和动作方法。

    @interface ViewController ()
    @property (weak, nonatomic) IBOutlet UIButton *undoButton;
    @property (weak, nonatomic) IBOutlet UIButton *redoButton;
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
    }
    
    - (IBAction)undo:(id)sender {
    }
    
    - (IBAction)redo:(id)sender {
    }
    
    @end
  4. 在 ViewController.mm 中导入 GiViewHelper.h,在 viewDidLoad 中启用Undo功能,实现Undo/Redo按钮方法:

    - (void)viewDidLoad {
        [super viewDidLoad];
    
        NSString *path = [LIBRARY_FOLDER stringByAppendingString:@"undo"];
        [[GiViewHelper sharedInstance]startUndoRecord:path];
    }
    
    - (IBAction)undo:(id)sender {
        [[GiViewHelper sharedInstance]undo];
    }
    
    - (IBAction)redo:(id)sender {
        [[GiViewHelper sharedInstance]undo];
    }

    运行程序,画几个图,试试Undo/Redo按钮吧。虽然能工作了,但按钮可用状态未显示出来。

  5. 在 ViewController 中实现 GiPaintViewDelegate 观察者协议的 onContentChanged: 方法,注册此观察者。

    @interface ViewController ()<GiPaintViewDelegate>
    ...
    - (void)viewDidLoad {
        [super viewDidLoad];
        ...
        GiViewHelper *hlp = [GiViewHelper sharedInstance];
    
        [hlp startUndoRecord:[LIBRARY_FOLDER stringByAppendingString:@"undo"]];
        [hlp addDelegate:self];
        [self onContentChanged:hlp.view];
    }
    
    - (void)onContentChanged:(id)view {
        GiViewHelper *hlp = [GiViewHelper sharedInstance];
        self.undoButton.enabled = [hlp canUndo];
        self.redoButton.enabled = [hlp canRedo];
    }

样例代码见 GitHubOSC,欢迎 Fork。

iOS绘图例2:增加Undo/Redo功能

标签:http   io   os   java   ar   for   art   cti   on   

原文地址:http://my.oschina.net/rhcad/blog/318775

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!