如何创建包装UIOffset结构的NSValue?

时间:2012-03-30 21:29:25

标签: ios cocoa-touch

我正在尝试更改UISegmentedControl的文字阴影位置。要做到这一点,documentation说我需要传入包含UIOffset结构的NSValue

UITextAttributeTextShadowOffset
    Key to the offset used for the text shadow in a text attributes dictionary.
    The corresponding value is an instance of NSValue wrapping a UIOffset struct.
    Available in iOS 5.0 and later.
    Declared in UIStringDrawing.h.

问题是NSValue对于UIOffset结构没有这样的包装方法 - 只需搜索文档。我看到很多sample code使用这个不存在的函数。

[NSValue valueWithUIOffset:UIOffsetMake(0, 1)]

当我尝试运行它时崩溃了。我不明白有多少示例代码可以运行它。

2 个答案:

答案 0 :(得分:5)

查看NSValue UIKit Additions,这是一个类别,除了其他有用的东西之外,它还会添加您所使用的-[NSValue valueWithUIOffset:]方法。

答案 1 :(得分:1)

它可能不在文档中,但它存在,并且有效:

NSValue *uiOffsetValue = [NSValue valueWithUIOffset:UIOffsetMake(0, 1)];
NSLog(@"%@", uiOffsetValue);
// outputs "UIOffset: {0, 1}"

你是什么意思,当你试图运行它时会崩溃?如果该方法不存在,那么它甚至不应该编译。如果您的应用程序编译但崩溃,则问题必须是其他问题。