注:测试过可行


    - (void)hideTabBar {  
        if (self.tabBarController.tabBar.hidden == YES) {  
            return;  
        }  
        UIView *contentView;  
        if ( [[self.tabBarController.view.subviews objectAtIndex:0] isKindOfClass:[UITabBar class]] )  
            contentView = [self.tabBarController.view.subviews objectAtIndex:1];  
        else  
            contentView = [self.tabBarController.view.subviews objectAtIndex:0];  
        contentView.frame = CGRectMake(contentView.bounds.origin.x,  contentView.bounds.origin.y,  contentView.bounds.size.width, contentView.bounds.size.height + self.tabBarController.tabBar.frame.size.height);          
        self.tabBarController.tabBar.hidden = YES;  
          
    }  

    - (void)showTabBar  
      
    {  
        if (self.tabBarController.tabBar.hidden == NO)  
        {  
            return;  
        }  
        UIView *contentView;  
        if ([[self.tabBarController.view.subviews objectAtIndex:0] isKindOfClass:[UITabBar class]])  
              
            contentView = [self.tabBarController.view.subviews objectAtIndex:1];  
      
        else  
              
            contentView = [self.tabBarController.view.subviews objectAtIndex:0];        
        contentView.frame = CGRectMake(contentView.bounds.origin.x, contentView.bounds.origin.y,  contentView.bounds.size.width, contentView.bounds.size.height - self.tabBarController.tabBar.frame.size.height);  
        self.tabBarController.tabBar.hidden = NO;  
          
    }  

//如果定义了上面两个方法,在viewDidAppear:方法里面就可以调用了
    -(void)viewDidAppear:(BOOL)animated{  
        //[self hideTabBar];  
        [self showTabBar];  
    }  


参考:http://blog.csdn.net/riveram/article/details/7345577
iPad 应用“iNotes”的开发者“Anxonli” 近日在博客上介绍了自己开发这款 iPad App 的全过程心得,包括软件开发周期规划、各阶段注意事项等实用经验,值得大家阅读。原文 http://anxonli.javaeye.com/blog/707282

根据我自己的经验,一个iPad或iPhone app的开发周期大概是这样的:
1. App的idea形成
2. App的主要功能设计
3. App的大概界面构思和设计(使用流程设计)
4. 大功能模块代码编写
5. 大概的界面模块编写
6. 把大概的界面和功能连接后,app的大致demo就出来了
7. demo自己试用和体验几遍后,根据情况修改
8. app的0.8左右版本完成后可以加入production的图标和部分UI图片
9. 没有大错误后,0.9版本可以尝试寻找beta用户
10. 根据测试用户的反馈,重复 7 - 9的步骤
11. app完成后,加入app icon, iTunesArtwork等等UI元素。反复测试无错误后上传iTunes

上述步骤是我个人的做法,因为我没有界面设计师,大部分icons是买回来的,图片是自己photoshop做的。如果你有界面设计师,流程可能不一样。例如,在第三步,界面设计上,可以编写功能模块和设计师同步进行。这样app的demo出来后,基本上可以有界面可以用了。Anyway, 另外要指出的是,在我的第五个步之前,我还是没有碰过iPad, 所以只能在模拟器做大的功能开发。模拟器不够用吗?对于iNotes开发来说,当然不够用,simulator的多触点(multi-touch)支持是非常弱的,很多touch的测试是无法在simulator做的。

在我的第四和第五步的开发过程中,基本上是weekdays每天晚上开发3-4个小时,两天出一个功能,周末集中精力开发一到两个个大功能,例如 image cropping. 很多人可能做过image cropping, 例如网页上的javascript上实现,或者flash上的实现。但iPhone OS上实现是不一样的,至少对我来说,因为第一点,你要注意内存的使用(iOS开发上最最重要的思维),在网页上,你可以不用考虑你使用了多少个图片的 copy,但iOS上是不可以的,每次用完原图(大图片)后要立即释放内存。第二,cocoa的图片缩放/旋转基本上是利用UIView的 transform来完成,transform的时候还要考虑用户的手指touch的位置。总之比web上实现要复杂,虽然OS 3.2已经有了gesture recognition api,相对比以前轻松。

版本做到0.8以后,我就开始在twitter招募了5-6个测试用户,所以非常感谢 robbinfan、tinyfool 等同学对我的app的批评和意见。很多在我看来不是那么大问题的设计,但对部分用户来说非常反感,让我在后来对这些点进行较大幅度的修改。能够在产品设计和开发过程中,找一部分测试用户参与是非常有必要的。对他们的回馈的方法,可以在app发布后对这些用户发放免费产品。这个做法即可以提高你的产品质量,又可令到你的测试用户拿到免费的软件产品。

最后,app提交 iTunes 以后,大概要花7-14天来等候审批。这个时期到底要干嘛呢?对我来说,这个时期就是买域名,架网站,设计网站,配置邮件服务器,反复修改app description,还有twitter推广等等。对没有做web design很久的我来说,刚是iNotes网站的设计和实现就已经花了我两整天了,还没有完成呢, 继续努力!

昨天 twitter 上有人问,他也想跳出来专门做iphone开发,但就是怕单干太寂寞。我的回应是,如果你要决心创业的话,首要条件就是要奈得住寂寞,特别是利润没有来到之前,特别是你雇不起专业人员的时候。老大说过,只有当工作当成是兴趣的时候,你的兴趣就是工作的时候,你才不会寂寞。

前几日,cnbeta 上连续几篇文章,进行了关于“Linux  桌面”是死还是活的论战,本篇文章不是继续论战,我们这里不会参与其中。当然,个人希望这样的论战越多越好,因为有人在关心 Linux  桌面的发展,有人在思考 Linux 桌面的未来。这是值得庆幸的一件事情。俗话说:理不辩不明。

    

在大家的文章中都提到 Linux 桌面的短板,这里也不必再次重复 Linux  及开源软件所拥有的诸如免费、开源等特点。我相信,Windows-Linux 和 Vim-Emacs  用户之间的争论一样,是没有结束的。过一个周期,就来一阵,就像女人的“月经”。与其花费那么多力气,还倒不如实实在在的去做些我们该做的事情。多做些事 情,少谈些“主义”!

让我们的开源社区越来越好的方法,就是我们大家都积极参与进来。参与开源社区、使用开源软件,就是对开源社区最好的支持!

下面是我根据自身经历总结的一些参与开源社区的方法。限于个人能力,如有错误,敬请指出,也欢迎补充。

一、参与本地化项目

本地化简介

并不是所有应用的界面都是中文的,也并不是所有的同学英文都是那么棒,开源软件的本地化是让本地用户更加轻松使用优秀开源应用的中间桥梁。

在本地化与国际化中,常用 l10n 和 i18n 来表示。


l10n 是 localization(本地化)的缩写。从开头 l 到末尾 n 之间有 10 个字母,故简写为 l10n;
i18n 是 internationalization(国际化)的缩写,从开头 i 到末尾 n 之间有 18 个字母,故简写为 i18n;

平台推荐

目前,比较应用比较广泛的本地化平台有:
  • launchpad(Ubuntu 商业支持公司 Canonical 公司建设与维护,不仅是本地化平台,还提供代码托管、项目管理、Bug 追踪、Ubuntu 包构建和托管等功能。Ubuntu 目前的本地化采用该平台。更多可阅读Launchpad 翻译新手指北);
  • transifex(目前 Fedora 本地化采用该平台)
  • Damned Lies(管理 GNOME 项目本地化的平台,点击注册加入中国团队

  • 目前,Linux Deepin 也提供了在线翻译平台:http://pootle.linuxdeepin.com/,在该平台翻译的成果也会定期提交到上游。

    只需注册一个帐号,就可以轻轻松松帮助本地化项目。当然,并不是你所提交的翻译都能全部采用,还必须通过其他审核同学的审核等流程,最后才能提交。这样复杂的流程并不是繁琐,而是以此保持翻译的质量。所以遇到被要求重新翻译的时候不要恼怒——“质量为重”。

    常用工具

    如果不是在在线翻译平台(如 launchpad)翻译,而是在本地计算机编辑 po 文件,则常用的工具有 gettext 和 poedit。

    在Debian系列发行版本中可使用下面命令安装:
    sudo apt-get install gettext #安装 gettext,命令行工具 sudo apt-get install poedit #安装 Poedit,图形界面工具

    资料推荐

    建议:去做本地化之前,请先阅读达人们写的一些资料,熟悉相关规则(拿我来说,开始虽有热情,但基本的规则不太懂,致使过程有点坎坷。目前兔兔也是菜鸟一只,希望有能力的同学都能够参与进来,尽自己所能!)。

    GB(T)7408-94.pdf
    l10n-gnome-org.pdf
    l10n-guide-zh-cn.pdf
    如何对自由软件进行本地化.pdf

    二、论坛活动

    有问题,搜谷歌;有问题,到论坛去提问。最好在提问之前,去搜索下,如果实在无法解决就去论坛提问吧。

    论坛推荐:
  • Askubuntu(一个优秀的 Ubuntu 问答网站)
  • ubuntu 中文论坛
  • LinuxDeepin 论坛
  • 其他发行版本用户论坛
  • ……

  • 提出自己的问题以求助,同时也去帮助别人解答问题。不仅“取”,也要“予”。写写自己的经验、小技巧,为别人提供参考,这不很好吗?虽然我很少在论坛发言…

    三、邮件列表

    邮件列表
  • Ubuntu 官方中文邮件列表 https://lists.ubuntu.com/mailman/listinfo/ubuntu-zh
  • SHLUG / 上海 Linux 用户组
  • 官方网站: http://www.shlug.org/
    Google Group: http://groups.google.com/group/shlug
    发送电邮至 shlug+subscribe@googlegroups.com 即可加入
  • HZLUG / 杭州 Linux 用户组
  • Google Group: https://groups.google.com/group/hzlug
    发送电邮至 hzlug+subscribe@googlegroups.com 即可加入
  • GZLUG / 广州 Linux 用户组
  • Google Group: http://groups.google.com/group/gzlug
    发送电邮至 gzlug+subscribe@googlegroups.com 即可加入
  • TJLUG / 天津 Linux 用户组
  • Google Group: http://groups.google.com/group/tjlug
  • 北京Linux用户组: http://www.beijinglug.org/
  • 南京Linux用户组: NJLUG@googlegroups.com http://nanjinglug.org/
  • 合肥Linux用户组: hefeilug@googlegroups.com
  • 深圳Linux用户组: szlug@googlegroups.com
  • gnome中文用户组: gnome-cn-list@gnome.org
  • Linux Deepin 用户邮件列表:deepinusers@googlegroups.com

  • IRC 频道
    Ubuntu中文官方支持频道 irc.freenode.net #ubuntu-cn

    (以上联系列表内容摘自 WowUbuntu 社区)

    在这些邮件列表里面定会有你感兴趣的话题,起码可以看看别人都在讨论什么。“独学而无友,则孤陋而寡闻”,关键是要找到组织啊…不知道有没有武汉 Linux 用户小组,一直寻找中…

    四、博客写作与社会化分享

    博客写作

    不管是类似于Linuxtoy、Wowubuntu、笨兔兔、Ubuntusoft、IMCN  等拥有独立域名的业界博客,还是在其他门户网站下建立的博客,都是分享自己经验、技巧的好地方。“想”和“写”都是艰难的过程,有时候想的出来,但写不出 来。不管你的博客有多少读者,请坚持下去!我相信,只要坚持,读者会越来越多。在各位的文章中解决的问题,总有遇到一样问题的人会搜索到你的博客来,这样 就为别人提供了帮助,也体现了自己的价值。

    建立自己的独立域名博客当是极好的,若囊中羞涩,选择有名的博客站点注册一个帐号,然后开始自己的博客人生,倒也不负恩泽…(说人话:后面一个花钱最少…)。比如点点轻博客

    写博客固然是一件费时间的事情,但可以帮助你获得意外不到的惊喜!

    积极分享

    我们可以充分利用社会化分享网络如人人、QQ、新浪微博等各个平台,建个小站、组个微群、更新 Linux 相关的状态,积极转发@Linux信息,发表下对开源社区/软件的看法和理解……我们可做的都是小事,但大家一起来做,这就是氛围和潮流!
    五、参与各地的技术活动
    在有条件的城市或地区,个人建议积极参加各地的技术活动。星期六星期天不出去玩,也是宅,宅,宅…

    与参加技术交流会的各个未曾谋面的同学聊聊天,这种“弱关系”往往比“强关系”带来的信息量大得多的多,带给你思维上的拓展。平常都是在“强关系”(熟人圈子)的包围中,所谈也不外乎妹子、吃吃喝喝之类没有什么新意的话题…

    六、写个本地特色应用

    如果您抱怨 Linux 桌面应用不给力,但您拥有编程技术,那就好好写一个本地化的应用。不仅让自己受用,也让别人从您的技术中获益。您将获得不一样的心情。您所做的一切,最终会得到大家的认可!小玩意,小应用,往往也是最受欢迎的。不要吝啬您的才华!

  • 桌面Linux必亡 开源免费竟是最大缺点?(导火索)
  • 驳《桌面Linux必亡 开源免费竟是最大缺点?》
  • 半死不活的Linux桌面发行版
  • 为什么我在使用Linux桌面
  • 分页: 1/1 第一页 1 最后页 [ 显示模式: 摘要 | 列表 ]

    阅读推荐

    服务器相关推荐

    开发相关推荐

    应用软件推荐