iOS开发百问(11)

131、如何限制ScrollView在某个方向上不可滚动?

例如,要限制x方向上不可滚动,可以实现UIScrollViewDelegate协议方法:

func scrollViewDidScroll(scrollView: UIScrollView) {

ifabs(scrollView.contentOffset.x) > 0 {

scrollView.contentOffset= CGPointMake(0, scrollView.contentOffset.y)

}

}

132、如何在Swift Framework目标中导入O-C框架

以BmobSDK 为例(CommonCrypto等C/O-C框架也是一样的),当你将BmobSDK添加到Link Binary With Libraries中时,当你使用“importBmobSDK”语句时,出现错误:no such module

如果你试图使用bridging headers导入BmobSDK,则会导致另一个错误。

这是由于Swift Framework不支持bridging headers文件。

解决这个问题,需要经过以下步骤:
1) 在项目目录中创建BmobSDK目录,将BmobSDK.framework放到这个目录。同时在这个目录下创建一个module.map文件,内容如下:

module BmobSDK [system] {

header"/Users/kmyhy/Documents/Swift/code/第12章/kNote/BmobSDK/BmobSDK.framework/Headers/Bmob.h"

link "BmobSDK"

export *

}

这将允许我们将BmobSDK当做Swift module来使用。

2) 在Build Settings中,找到Import Paths(SWIFT_INCLUDE_PATHS),增加BmobSDK目录。如下图所示:

3)在swift文件中导入BmobSDK框架:

import BmobSDK

133、如何在App Extension中使用CocoaPods

在 Podfile中加入此句:

link_with ‘扩展的名字‘

添加bridging header文件,并设置Objective-C BridgingHeader。

134、错误‘xxx.pch‘ has been modified since the precompiled header was builterror in Xcode

执行深度Clean(快捷键Option+Command+Shift+K)

135、Document Provider扩展中,DocumentPickerViewController的documentStorageURL属性返回为nil。

确认容器App,Document Provider扩展和File Provider扩展的App Groups设置正确,如果有任何惊叹号,请Fixed。

136、插入和删除CollectionView中的Cell

跟TableView一样,我们可以用insertItemsAtIndexPaths()/deleteItemsAtIndexPaths()插入/删除单元格。不同的是CollecionView不再支持beginUpdates()/endUpdates()操作。默认已支持插入/删除动画,如果不想要默认动画效果,可以设置UIView的animationsEnabled属性:

BOOL animationsEnabled = [UIView areAnimationsEnabled];

[UIView setAnimationsEnabled:NO];

[myCollectionView reloadItemsAtIndexPaths:myIndexPaths];

[UIView setAnimationsEnabled:animationsEnabled];

137、UIScrollView中的UICollectionView不会滚动

检查UIScrollView是否被设置了delegate属性,同时检查在delegate中是否实现了scrollViewDidScroll方法。如果是,请删除该方法(仅仅取消delegate属性是不行的)。

同时检查UICollectionView的宽度(或宽度约束)、高度(或高度约束),以及列表内容大小,因为当列表内容小于UICollectionView的宽(或高)时,该方向的滚动条不会出现。

138、单元格使用UITableViewCellStyleValue1,为什么显示不正确?

UITableViewCell 有几个内置的类型,如UITableViewCellStyleDefault、UITableViewCellStyleValue1、UITableViewCellStyleValue2。

这些Cell都是SDK预先配置的,它们呈现固定的内置样式,比如字体大小、颜色、对齐方式等。如果你在想修改这些配置,很可能显示不正常,比如有的文本一下子能显示,一下子又不显示,或者一下子显示固有字体(及颜色),一下子(比如说点击单元格)又显示修改后的字体(及颜色)。

在这种情况下,你最好定制自己的单元格(子类化)。

139、boundingRectWithSize 计算出的尺寸不正确?

注意提供正确的options参数。对于UILabel,至少需要使用UsesLineFragmentOrigin和UsesFontLeading两个选项:

CGRect paragraphRect =

[attributedTextboundingRectWithSize:CGSizeMake(300.f, CGFLOAT_MAX)

options:(NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading)

context:nil];

140、Swift中无法对多个枚举值进行按位或(|)运算

注意,这个问题在 iOS 8.3 SDK Beta 1 (12F5027d)中已解决。对于低于此版本的SDK,我们可以用以下代码代替:

let options =unsafeBitCast(NSStringDrawingOptions.UsesLineFragmentOrigin.rawValue |

NSStringDrawingOptions.UsesFontLeading.rawValue,

NSStringDrawingOptions.self)

let frame = text.boundingRectWithSize(size, options:options, attributes:D,context:nil)

时间: 2024-10-27 04:54:00

iOS开发百问(11)的相关文章

iOS 开发百问(3)

22.解决 messagesent to deallocated instance 0x52cc690 错误 当试图对某个对象进行赋值操作的时候出现这个错误,如: tfContent.text=bodyText; 此时,你可以打开NSZombieEnable选项,则console会有如下输出: ***-[CFString _isNaturallyRTL]: message sent to deallocated instance 0x52cc690 说明_isNaturallyRTL消息被发送给

iOS开发百问(4)

32.UIImage+Scale缩放图片 UIImage可以加载图片,但是我们想要得到一张缩小或放大的图片,利用UIImage不能做到,下面我们添加一个UIImage的分类,用来实现UIImage中图片的放大和缩小. 首先,创建一个UIImage+Scale类. 然后,实现该类的方法: #import <UIKit/UIKit.h> @interface UIImage (scale) -(UIImage*)scaleToSize:(CGSize)size; @end #import &quo

iOS 开发百问(5)

42. 警告:Multiplebuild commands for output file target引用了名字反复的资源 找到当前的target,展开之后.找到CopyBundle Resources栏目.然后在里面找到反复名字的资源.删除不要的那个就可以 43.签名错误:Provisioningprofile can't be found 在Xcode中当你在更新了你得证书而再又一次编译你的程序,真机调试一直会出现Code Sign error: Provisioning profile

iOS 开发百问(10)

121.如何将字典/数组转换为字符串? NSString* id2json(id dicOrArr){ NSError *error; NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dicOrArr options:NSJSONWritingPrettyPrinted // Pass 0 if you don't care about thereadability of the generated string error:

iOS 开发百问(8)

90.找不到 Profile 错误"CodeSign error: no provisioning profile at path '/Users/yourname/Library/MobileDevice/ProvisioningProfiles/F87A055A-EC0D-4F19-A015-57AB09DEBECB.mobileprovision'" 在 ProjectNavigator 中选择你的项目,使用 View ->Version Editor -> Show

iOS 开发百问(6)

61.警告"addexplicit braces to avoid dangling else" 所谓"危险的else"是类似这样的代码: if(a== 10) printf("TEN"); else printf("NOT TEN"); a = 100; 编译器认为你的else 子句导致语义不清,你到底是什么意思?是无论 a 是否等于10 , if 执行完之后都要将 a 赋值为100,还是只想在 else 子句(即 a 不等

iOS 开发百问(9)

101.编译错误:ld: library notfound for -lPods 当项目中使用了 cocoaPods 时,经常出现此错误(通常是 release 的时候). 这是由于 pod install 后,cocoaPods 会创建一个新的 workspace.你必须关闭项目并重新打开.问题即可解决. 102.为什么 iOS 的时间总是比真实时间慢8小时 例如,一个北京时间"2014-4-4 22:00"(字符串),需要转换成 NSDate.字符串转换成 NSDate 一般是通过

iOS 开发百问(7)

71.如何让UIWebView的大小符合HTML的内容? 在 iOS 5中,这很简单,设置 webview 的委托,然后在委托中实现didFinishLoad:方法: - (void)webViewDidFinishLoad:(UIWebView *)webView{ CGSize size=webView.scrollView.contentSize;//iOS 5+ webView.bounds=CGRectMake(0,0,size.width,size.height); } 72.窗口中

k3 Bos开发百问百答

          K/3 BOS开发百问百答   (版本:V1.1)           K3产品市场部       目录 一.基础资料篇__ 1 [摘要]bos基础资料的显示问题_ 1 [摘要]单据自定义无法看到bos定义的基础资料_ 1 [摘要]在调出基础资料序时簿时,过滤出我需要的基础资料_ 1 [摘要]bos定义的基础资料能否做到按名称而不是按代码进行自动匹配_ 1 二.业务单据篇__ 2 [摘要]是否支持多插件和数据授权_ 2 [摘要]K3BOS单据(新)中的数量字段怎样才能控制到两