【问题标题】:Changing size of NSTextView改变 NSTextView 的大小
【发布时间】:2012-06-25 19:49:08
【问题描述】:

我正在尝试实现一个NSTextView,它会调整大小以适应其内容。我正在尝试使它具有最大数量的行。意思是,当达到这个限制时,它不会进一步增长,用户将能够滚动它。

似乎有很多人想要这个,但我还没有找到一个完整的实现。

我们的想法是获取NSTextView 的内容大小并调整其大小以使其匹配。我只是不知道如何设置NSTextView 的布局大小。似乎不是 frame 需要设置和预期的。

谁能告诉我如何设置NSTextView的框架?

【问题讨论】:

    标签: macos cocoa nstextview


    【解决方案1】:

    原来应该改变的是滚动视图的高度。更改NSTextView 的高度可以通过覆盖-didChangeText 方法来完成,如下所示。

    - (void)didChangeText
    {
        NSScrollView *scrollView = (NSScrollView *) self.superview.superview;
        NSRect frame = scrollView.frame;
    
        // Calculate height
        NSUInteger numberOfLines = [self numberOfLines];
        NSUInteger height = frame.size.height;
        if (numberOfLines <= 13)
        {
            height = 22 + (numberOfLines - 1) * 14;
            if (height < 22)
                height = 22;
        }
    
        // Update height
        frame.size.height = height;
        self.superview.superview.frame = frame;
    }
    

    使用常量来获得你想要的结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多