从Objective-C到Swift,你必须会的(二)组合options
来源:互联网 发布:f调8孔洞箫制作数据 编辑:程序博客网 时间:2024/05/04 03:31
用过Options这个东西的人都知道,几个竖线就把这些值都和到一起了。比如:
+ (NSStringDrawingOptions)combine{ return NSStringDrawingTruncatesLastVisibleLine | NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading;}
很简单的一个东西啊。这个为什么要拿出一篇来专门说呢?因为,APPLE有bug!对,你在Swift里这么做是会报错的(你知道我说的是按照Swift的语法写)。比如:
let size = CGSize(width: 280, height: Int.max)let options : NSStringDrawingOptions = .UsesLineFragmentOrigin | .UsesFontLeadinglet boundingRect = string.bridgeToObjectiveC().boundingRectWithSize(size, options: options, attributes: attributes, context: nil)
介个是不work的。编译器会报错:could not find memeber 'UsesLineFragmentOrigin'。但是代码还是要这么写的。遇到有必要同时满足这些不同options的时候也是只能这么写的。
但是既然有这么个bug该怎么办呢?好吧你开着Xcode还找不到现成的么有bug的办法么?想想,你会想到什么?必须是OC了。而且非常方便,虽然还是绕路了,哎。
在一个Swift项目里,添加或者导入OC文件的时候,Xcode会提示你要创建一个bridge header(桥街头文件,咱们就简称桥头吧)。如果系统没有给你间,自己也可以搞定,然后在build settings里面指定好你自己桥头的路径就好了。这个具体的会在本系列说明。
之后创建OC文件,之后实现好了你需要的功能就好了,如:
@implementation Utils+ (NSStringDrawingOptions)combine{ return NSStringDrawingTruncatesLastVisibleLine | NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading;}@end
头文件什么的就不用我详细写了吧。就是声明了一下类名称为Utils,这个类包含了一个类方法叫做combine。
只要在桥头文件里有这个OC文件的头文件import进去了,那么在Swift文件中就可以直接使用了。你不用在在任何的Swift代码里有import的想法和动作。使用的时候就这样:
let options = Utils.combine()let calculateSize = CGSize(width: width, height: 0 as Double)var rect = content.boundingRectWithSize(calculateSize, options: options, attributes: [NSFontAttributeName: font], context: nil)
很简单,这个问题就解决了。后面就等苹果改他的这个bug了。
欢迎加群互相学习,共同进步。QQ群:58099570 | 做人要厚道,转载请注明出处!
0 0
- 从Objective-C到Swift,你必须会的(二)组合options
- 从Objective-C到Swift,你必须会的(四)DLog
- 从Objective-C到Swift,你必须会的(四)DLog
- 从Objective-C到Swift,你必须会的(一)#pragma mark
- Swift学习: 从Objective-C到Swift
- Swift学习: 从Objective-C到Swift
- Swift学习: 从Objective-C到Swift
- Swift学习: 从Objective-C到Swift
- Swift学习: 从Objective-C到Swift
- Swift学习: 从Objective-C到Swift
- [Swift]学习: 从Objective-C到Swift
- swift学习Swift学习: 从Objective-C到Swift
- iOS 从Objective-C到Swift
- iOS 从Objective-C到Swift
- 从C/C++到Objective-C(二)--- 面向对象
- 优雅的从Objective-C转向Swift
- 从Objective-C到Swift:几点想法和意见
- 简述如何从Objective-C到Swift过渡
- Qt5支持中文
- Markov chain的基本知识
- NYOJ746——整数划分(四)
- java高并发,如何解决,什么方式解决
- u-boot-2014.10移植第16天----Nor flash启动
- 从Objective-C到Swift,你必须会的(二)组合options
- 第十一周项目6 (4)输出1000以内的所有回文数
- javascript函数调用call和apply
- iOS 修改 TableView 的 delete 按钮
- bzoj 1699: [Usaco2007 Jan]Balanced Lineup排队
- JAVA读取.RSA密钥信息及获取KEYSTORE指纹信息
- OLED液晶屏操作记录
- 如何创建回收站
- xcode如何实现多工程联编