1. 应用某个版本开发完毕了,接下来就是要发布了。在用Xcode进行Archive后,选择Validate,结果出现了错误:unable to validate your application. the package does not contain an info.plist
错误截图如下:
于是便开始上网寻求解决方案,向小伙伴们寻求帮助。小伙伴们说都没遇到过相同的问题,都是一次Validate就通过了,没办法,只能求助于网络,但是网络上答案也是五花八门,有的甚至说这是Xcode6的bug。。。在几乎绝望的时候,突然看到一个答案,可能是info.plist文件中的某个参数缺失或者错误导致的,于是我用文本编辑器打开工程的info.plist文件,按照答案找到了关键参数:CFBundlePackageType,谷歌后得到的解释如下:
CFBundlePackageType
CFBundlePackageType(String- iOS, OS X) identifies the type of the bundle and is analogous to the Mac OS 9 file type code. The value for this key consists of a four-letter code. The type code for apps is APPL; for frameworks, it is FMWK; for loadable bundles, it is BNDL. For loadable bundles, you can also choose a type code that is more specific than BNDL if you want.All bundles should provide this key. However, if this key is not specified, the bundle routines use the bundle extension to determine the type, falling back to the BNDL type if the bundle extension is not recognized.
我看了一下我的CFBundlePackageType的值,竟然是BNDL。。。于是改为APPL,于是顺利Validate,顺利构建版本到了App Store,又get一个新技能。
2. 底部留白问题
如图所示,我使用了牛逼的MJRefresh,但是出现了底部留白的问题。
问题分析及解决方法:
UIScrollView(包括其子类,比如UITableView):会自动在顶部和底部预留一些空白(因为滚动经过半透明导航条或者tabbar下面,需要能隐约看到的效果),是否预留空白可以由UIViewController的automaticallyAdjustsScrollViewInsets的这个属性控制(默认YES,表示预留空白)。上面这些只要你用iOS开发,就能发现。最近遇到一个问题:在项目中一个控制器中有一个瀑布流和一个table,发现瀑布流顶部预留空白,而table却没有,查找了许多资料,终于找到了原因所在:一个控制器中,出现UIScrollView(包括其子类),必须是第一个添加到控制器的视图上才会预留空白,这里的第一个是相对于所有的子视图,不仅仅是其他UIScrollView(包括其子类)。那么我遇到的问题如何解决呢,还是这个属性automaticallyAdjustsScrollViewInsets,仔细看它的文档说明,它说了,如果一个控制器中出现两个以上的UIScrollView(包括其子类),这个属性需要设置为NO.即不会预留空白,那么这个控制器中所有的UIScrollView(包括其子类)都需要重新设置坐标。
于是问题顺利解决。