14

我有一个显示 NSAttributedString 的 UIView。它设置为调整大小以适应其内容。

我想在文本和视图之间创建一些填充,但是它不是很有效。如果我这样做...

view.textContainerInset = UIEdgeInsetsMake(0, 15, 0, 15);

...然后左右边缘被填充,顶部和底部没有空间。这是对的。然后我添加一个顶部插图:

view.textContainerInset = UIEdgeInsetsMake(15, 15, 0, 15);

现在顶部有 15 点填充,但突然底部也填充了一点(大约 10 点)。

如果我然后添加 15 点底部填充,底部会变得太大,并且间距始终不一样。相反,我不得不捏造它:

view.textContainerInset = UIEdgeInsetsMake(15, 15, 5, 15);

这是iOS 7的错误还是我误解了什么?我讨厌在不了解发生了什么的情况下捏造底部价值。

4

2 回答 2

4

我不确定是什么给出的,但我遇到了同样的问题,似乎是苹果的一个错误。我在 iOS7.1 上测试。

在我的特殊情况下,我试图在顶部和底部添加一些插图,例如。

view.textContainerInset=UIEdgeInsetsMake(100, 0, 100, 0);

正如原始问题所述,底部插入的 100 似乎被忽略了。我偶然发现的是我可以这样做:

view.textContainerInset=UIEdgeInsetsMake(100, 1, 100, 0);

这给了我预期的底部插图。我可以忍受左边的(所谓的)1 点插图,所以我将把它用作一种解决方法,它应该(理论上)在当前版本的 iOS 下工作,并且在修复错误后不会完全中断。我当然也会提交错误报告。

于 2014-05-08T21:39:45.990 回答
1

仍然存在于 iOS 8.4(模拟器)中。

如果 Insetleftright为 0,则不考虑底部。

如果 left 或 right 的任何属性不为 0,则尊重它:

_title.textContainerInset = UIEdgeInsetsMake( dy, 0, dy, 0.001);
于 2015-09-02T08:48:18.677 回答