Amo*_*kar 1 objective-c ios ios5 ios6
我正在尝试在UIButton中为textLabel设置linebreakmode.
self.scheduleButton.titleLabel.lineBreakMode = NSLineBreakByWordWrapping;
Run Code Online (Sandbox Code Playgroud)
NSLineBreakByWordWrapping 在iOS 6.0之前不可用.
self.scheduleButton.titleLabel.lineBreakMode = UILineBreakModeWordWrap;
Run Code Online (Sandbox Code Playgroud)
将在iOS6之前工作但XCode会抛出一个错误,说它无法识别UILineBreakModeWordWrap.
如何确保在iOS 6之前完全忽略UILineBreakModeWordWrap代码.
我已经制作了一个宏来检查操作系统版本,我会使用respondsToSelector,如果它是一个方法的情况,但这是一个枚举类型.
SYSTEM_VERSION_LESS_THAN(@"6.0")
Run Code Online (Sandbox Code Playgroud)
我在这里使用它,但在if-else场景中但它仍然不能正常工作,因为XCode仍会告诉我UILineBreakModeWordWrap无法识别.
有没有办法在预处理级别了解操作系统版本?
#define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)
Run Code Online (Sandbox Code Playgroud)
我做的这个宏只会添加Objective C代码来确定操作系统类型,这意味着检查将在运行时进行.
但由于这个XCode不会忽略UILineBreakModeWordWrap.
这两个NSLineBreakByWordWrapping和UILineBreakModeWordWrap值相同.只要您的Base SDK是6.0或更高版本,那么使用NSLineBreakByWordWrapping将使编译器满意并且它将在运行时适用于任何版本的iOS.
| 归档时间: |
|
| 查看次数: |
401 次 |
| 最近记录: |