ios开发相对布局时同级View左右相接如何设置
:IOS    :kukei    :2016-04-23 20:09:54
:评论(0)

我最初的需求是在scrollview中并排放置两个view(view1和view2),大小和屏幕大小一致,用scrollview的翻页功能来实现滑动切换页面的功能;

然而在storyboard中设置两个view的左右相对距离为0时,发现找不到同级的view,即在view1上设置trailing与view2的leading距离为0时发现在设置界面找不到view2;经过一阵折腾后发现只有将view2的界面位置放在view1的左边时在设置界面才能找到view2,你可以设置view2的x值,快速达到这个目的。

XCode5升级到6后发现的问题及CNBlogs4IOS的bug解决
:IOS    :kukei    :2014-10-21 20:31:12
:评论(1)

这两天将我的t430从OXS10.9升级到10.10了,自然xcode也从5时代进入了6时代,问题自然也来。

1.An instance 0x7fe7ba22a000 of class UITableView was deallocated while key value observers were still registered with it。

问题原因是UITableView的实例被回收时,UITableView的实例注册的观察者还没取消,因此报错。我疑惑的是这种情况再xcode5上不报错,奇怪。

解决方法当让是在UITableView回收时取消观察了,代码如下:

- (void)dealloc
{
    [header free];
    [footer free];
}

free函数举例为:

- (void) free
{
    NSString *SDRObserverContentOffset = [_c.....
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,此时显示正常,但是我觉这这样不是好的解决方法,想请教一下,我的问题在那里,有没有好的解决方法。

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

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 ,在这个函数中判断是否重复即可。

经过验证,可行。