【问题标题】:Giving an NSTextView some padding/a margin给 NSTextView 一些填充/边距
【发布时间】:2010-12-29 09:44:55
【问题描述】:

如何给 NSTextView 一些填充/左边距? 我知道你是如何在 NSTextField 中做到这一点的(通过继承 NSTextFieldCell),但你如何在 NSTextView 中做到这一点?

编辑:更多信息: 1. 文本视图只有纯文本,没有富文本,也没有其他花哨的东西,比如适当的文本编辑器(例如段落插入)。 2.这个可以用setTextContainerInset:吗?

【问题讨论】:

    标签: objective-c cocoa


    【解决方案1】:

    创建可变段落样式(很可能通过制作默认段落样式的可变副本,然后将其头部缩进和第一行头部缩进设置为您想要的左边距。然后,将此段落样式设置为视图文本存储的全部内容的 NSParagraphStyleAttributeName 属性。

    请注意,这将显示在 RTF 中,并且可能会显示从视图获取/提供给您的 HTML 数据。如果视图不是只读的(即用户可以编辑文本并且您将从视图中检索或接收该文本),那么您可能应该避免使用此解决方案。如果用户可以自己显示标尺和编辑段落样式,那么您应该绝对避免这种解决方案。

    【讨论】:

      【解决方案2】:

      TextEdit 执行此操作的方式(在 Wrap to Page 模式下)是将文本视图放在较大的视图中,并将该较大的视图设置为滚动视图的文档视图。这需要更多的设置工作,但不会将演示信息(以特别定制的段落样式的形式)泄漏到模型(文本)中。

      【讨论】:

        【解决方案3】:

        您可以尝试继承 NSTextView 并覆盖 textContainerOrigin

        详情here

        例如,这个子类将给出一个上下边距为 5 左边 20 和 10 右边。

        @implementation MyTextView
        
        - (void)awakeFromNib {
            [super setTextContainerInset:NSMakeSize(15.0f, 5.0f)];
        }
        
        
        - (NSPoint)textContainerOrigin {
            NSPoint origin = [super textContainerOrigin];
            NSPoint newOrigin = NSMakePoint(origin.x + 5.0f, origin.y);
            return newOrigin;
        }
        
        @end
        

        【讨论】:

        • 这种方法和简单地使用setTextContainerInset:有什么区别?
        • @patrick setTextContainerInset 以相等的量插入顶部和侧面。在本例中,移动原点会使其填充不对称
        【解决方案4】:

        只是为此添加更新。 iOS7 向 UITextView 添加了一个名为 textContainerInset 的属性。调用 setTextContainerInset 将在 TextView 内为内容创建边距。

        【讨论】:

        • OS X 现在也有这个属性。
        • 你在哪里设置的?它可以在 InterfaceBuilder 中访问,还是只能以编程方式访问?可以为上/左/下/右设置不同的吗?
        【解决方案5】:

        这就是使用带有纯文本样式的NSTextView 所需要的全部内容:

        textView.textContainerInset = NSSize(width: 15, height: 5)
        

        【讨论】:

          猜你喜欢
          • 2011-04-17
          • 1970-01-01
          • 2012-04-02
          • 2012-07-27
          • 2011-07-18
          • 2015-02-15
          • 1970-01-01
          • 2012-08-23
          相关资源
          最近更新 更多