storyboard上的告警:“Unsupported configuration plain style unsupported in a navigation item”
:IOS    :kukei    :2014-04-22 09:07:50
:评论(2)

我在storyboard的navigation item的bar button item上加了额uibutton,xcode就开始给黄色告警了:“Unsupported configuration plain style unsupported in a navigation item”,经过多放测试搜索原来是要改bar button item的style而不是uibutton的style,问题解决,记录在此。

参考:http://stackoverflow.com/questions/8531972/unsupported-configuration-plain-style-unsupported-in-a-navigation-item

苹果开发者账号申请以及真机调试
:IOS    :kukei    :2014-04-21 17:12:16
:评论(1)
开发账号申请

周末终于决定申请一个苹果的开发者账号了,说行动就行动。

一路填写资料很顺利也很简单,麻烦的地方在支付,必须要visa或万事达的信用卡,而我手边没有,只好找朋友借一张用用,支付完成后,后快就到了apple发来的电子收据,说已经扣了我688元,但是我的申请一直卡在身份验证那一块。我就就上网查攻略,得到的反馈是因为我的姓名和信用卡的持卡人姓不一致,要给客服电话,然后客服发给你个邮件,你反馈身份证正反面,我就打客服4006701855,不想人家美国公司客服周末要休息,没办成。

今天上午我给客服打电话,我反映了我的情况以后,客服说让我等5到10分钟就给我激活,果然很快激活了。苹果的客服很热情周到。

真机调试

真机调试的攻略网上很多,要配置密钥,Provisioning Profiles等等,流程很繁琐。我想已经xcode5了,还不能简单点?我就拼着自己额xcode的了解,开始的真机调试的配置。

第一步:设置账号,点击项目,在右边的“Ge.....

storyboard界面设计中的约束功能
:IOS    :kukei    :2014-04-19 15:01:38
:评论(2)

storyboard界面设计中有个叫做约束的功能非常重要,特别是在以后ip6后ip将出现3到4个大小的屏幕尺寸,为了使app能在各种尺寸的屏幕上都能自适应,即不用代码来判断屏幕大小来设置view的大小,,此时约束就该发挥作用了。

首先约束的设置菜单在打开storyboard界面的【Editor -> pin -> ...】菜单中,这里面有几个功能:

  1. 设置宽度,高度;

    这个作用不明显

  2. 设置两个view之间横向和丛向的距离;

  3. 设置view到superview的上下左右的间距;

  4. 设置两个view等宽,等高;

我觉的第三个功能拿来做不同尺寸自适应非常好。

看一下设置的例子,例子中我们做了两个元素等高额的约束,但是发现1处有个红点剪头,而且2处结束线是橘色,说明这个约束没有设置完毕呢,设置完毕应该是蓝色的线条。那我们点击处的剪头进入问题列表中,让xcode来帮助我们完成设置,但是要注意,工具完成的设置不一定是我们想要的,所以这儿最好只当作提示来做。


xco.....

ViewController的生命周期分析和使用
:IOS    :kukei    :2014-04-18 09:53:32
:评论(1)

在ios开发给必须要十分清楚ViewController的生命周期,要不在出现一些问题时会不知所措,现在就整理一下这个知识点。

ViewController加载View

从Storyboards中加载的时候,会调用initWithCode,如果不存在则调用init。之后对里面的每个对象调用awakeFromNib方法。

从内存中alloc出来的情况下,调init方法。

ViewController查找与其关联的view,其顺序是:

  1. 先判断子类是否重写了loadView,如果有直接调用。之后调viewDidLoad完成View的加载。

  2. 如果是外部通过调用initWithNibName:bundle指定nib文件名的话,ViewController记载此nib来创建View。

  3. 如果initWithNibName:bundle的name参数为nil,则ViewController会通过以下两个步骤找到与其关联的nib。

    1. 如果类名包含Controlle.....

在tableview里面加subview后在ip4和ip5上显示不一样的问题
:IOS    :kukei    :2014-04-16 09:21:40
:评论(1)

我在在tableview里面加subview后在ip4和ip5上显示不一样;
直接在tableview的cell上面拖一个高度为50的view后,ip5上能显示正常,view随着tableview一起滚动,且没有遮挡住cell的内容,cell自动下移了view的高度;但是在ip4上显示错乱,能随着tableview滚动,但是view遮挡住了cell的内容,cell没有自动下移view的高度,我的布局图如下:

,鉴于以上情况,我对tableview做了一些处理,我将添加的view加到cell的header里面,但是此时发现依旧不行,我就给header设置了50的高度,发现ip5的view和cell之间增了50的高度,ip4显示正常了,此时我做了判断,在568时将header高度设置为0,480时将header高度设置为50,此时显示正常,但是我觉这这样不是好的解决方法,想请教一下,我的问题在那里,有没有好的解决方法。

我已经将这个问.....

APP开发手记01
:开发    :kukei    :2014-04-15 16:33:17
:评论(0)

最近在用博客园的wcf服务做博客园的android和ios的app,andorid的做了一小部分,开始搞ios,大概一月的时间,完成了博客的浏览,阅读,评论,发评论;新闻的浏览,阅读;个人登陆查看自己的博客,发博客等功能。期间为了实现目标,开发了下拉刷新插件,消息提示插件,完成了不同屏幕的高度自适应功能。

就在昨天晚上在做博客园上一个闪存的功能的时候,我突然迷茫了,我觉得博客园的web手机版,就能满足读者的需求,特别是闪存功能,我现在再做一个ios版的app,视乎是多余的。我之前的兴奋劲头突然一下子没有了,完成一个功能的成就感完全丧失。我开始考虑阅读类的服务,app版本比web手机版优势在哪里,哪类服务适合开发app版本,捋一捋这些对开发下一个app是必要的。

首先开发app对我个人而言是学习的过程,不得不说通过这个app的开发,我自己在ios开发方面提高了很多,本来有这个收获就足够了,但是为了使自己的收获有用,我还是比较一下app.....

ios开发3.5和4.0寸屏幕自适应中的一点问题
:IOS    :kukei    :2014-04-14 16:06:35
:评论(1)

在开发iso应用中需要考虑到ip4的3.5寸屏幕和ip5的4寸屏幕的高度不一样的问题。常见的问题有滚动条位置,底部被挡住等情况;我遇见是tableview中添加下拉上提刷新功能时刷新指示器显示位置的问题。

我自己根据网上已有代码写了一个下拉上提刷新插件:http://git.oschina.net/supdo/SDRefresh;

插件要根据tableview的高度来设置刷新指示器显示位置,为了正常工作,我在应用中对tableview的高度进行手工设置,代码如下:

- (void)viewDidLayoutSubviews
{
    [super viewWillLayoutSubviews];
        
    CGSize screenSize =  [UIScreen mainScreen].bounds.size;
    self.myBlogTable.frame = CGRectMake(0, 0,.....
IOS中用segment control控制table view 的切换
:IOS    :kukei    :2014-04-04 12:02:43
:评论(1)
项目中的文章列表分为最新和最热两个列表,格式完全一样,需要在一个页面上切换两个列表的显示。

方案一:

一个tableview,三个数据数组(一个最新,一个最热,一个指针引用),然后用segment切换来控制tableview的加载数据,切换时用reloaddata重新加载需要显示的数据。需要说明tableview加了下拉刷新的功能。

实现:功能已实现。

问题:

  1. 切换时重新加载内容,徒增性能损耗;

  2. 因为cell中有作者头像,是从互联网上加载的,因此每次重新加载tableview时都重新下载一遍头像,这对流量无端的损耗是不可饶恕的,是注定要被用户抛弃的。即使使用了异步加载,图像缓存技术,但是这个隐患还是很大。

  3. 滚动位置在切换时丢失,这个丢失是对用户体验而言的。实际是两个数据源大小不同,tableview的显示位置固定,影响用户体验。

  4. 下拉刷新完成后也会重新加载内容,如果刷新中切换页面,可能导致刷新内容丢失,或者刷新提示混乱。

  5. 试图解决方案:在.....
在NSMutableArray中用containsObject判断是否存在无效的问题
:IOS    :kukei    :2014-03-20 18:30:30
:评论(0)

我们常常用NSMutableArray来保存自定义的模型类,这样会存在排重的问题,因为每个模型类内容虽然完全一样,但是每个实例的内存地址不一样,直接用containsObject来排重结果是每次都不存在重复数据。

解决办法:

我们的模型类肯定都是继承NSObject的,那就在们的类中重载 - (BOOL)isEqual: (id)object ,在这个函数中判断是否重复即可。

经过验证,可行。

本地git代码push到远端服务器的步骤
:开发    :kukei    :2014-03-19 19:43:59
:评论(1)

原来一直在eclipse上开发,感觉git操作很方便,share一下,项目就push到服务器了,没想到到了XCode上,使用的很不顺畅,也可能是我不会用的缘故。

只好下载了ScourceTree客户端来管理git代码,push本地git代码到远端服务之前先要pull一下,将服务器上的代码拉下来,才能将本地和原来的代码一起push上去。

另外,oschina的git在osx上用的一直不顺畅,每次都要在命令行执行一下“ssh-add oschina/osckey”,输入密码,在输入“ssh -T git@git.oschina.net”,才能正常push代码。

github到是支持的比较好,但是身在天朝,动不动就连不上,让人很无奈啊。