使用CoreText时发现了一个奇怪的问题。以下是代码:
CGFloat headindent = theme.horizontalMargin.floatValue; // 10.0
CTParagraphStyleSetting head;
head.spec = kCTParagraphStyleSpecifierHeadIndent;
head.value = &headindent;
head.valueSize = sizeof(float);
CGFloat tailindent = -theme.horizontalMargin.floatValue; //-10.0
CTParagraphStyleSetting tail;
tail.spec = kCTParagraphStyleSpecifierTailIndent;
tail.value = &tailindent;
tail.valueSize = sizeof(float);
CGFloat firstlineindent =theme.horizontalMargin.floatValue;//10.0
CTParagraphStyleSetting firstline;
firstline.spec = kCTParagraphStyleSpecifierFirstLineHeadIndent;
firstline.value = &firstlineindent;
firstline.valueSize = sizeof(float);
CTParagraphStyleSetting settings[]={
head,
tail,
firstline,
};
CTParagraphStyleRef style = CTParagraphStyleCreate(settings, 3);
然后添加样式以生成属性字符串。我从存储在CoreData中的主题中获取值。当我在iPad上运行应用程序时效果很好,但在iPhone上代码不起作用。
我做了一个断点来检查问题是什么,我发现主题值在iPad和iPhone条件下都是正确的,但是样式的值,即CTParagraphStyleRef,在iPhone上运行时都是零。
之前有人遇到过同样的问题吗?我无法想象哪里出错了。
感谢您的帮助!
答案 0 :(得分:0)
我只是找到问题所在...... 在iPhone中,sizeof(CGFloat)= 8,sizefo(float)= 4, 在iPad中,它们都是4。
但仍然让我困惑的是,因为
typedef float CGFloat;
为什么他们的规模不同。