如何让自动布局自动将NSTextField换行为NSTextField的宽度更改为多行?使用自动布局自动换行NSTextField

我有许多NSTextField在检查器窗格中显示静态文本(即:标签)。由于用户调整了检查器窗格的大小,因此如果需要,我希望右侧标签可以重新排列成多行。

(Finder的获取信息面板做到这一点。)

但我一直无法弄清楚的自动布局约束的组合,以允许这种行为。在所有情况下,右侧的NSTextFields拒绝包装。 (除非我明确添加允许的高度约束)

视图层次结构是这样的:每个灰色带都是包含两个NSTextField的视图,左侧的属性名称和右侧的属性值。当用户调整检查器窗格的大小时,我希望属性值标签根据需要自动调整其高度。

现状:

我想什么有发生:

(请注意,这种行为比大多数堆栈溢出问题,不同的我遇到关于NSTextFields来到和自动布局,这些问题希望文本字段在用户输入时增长,在这种情况下,文本是静态的,并且NSTextField被配置为查看就像一个标签。)

更新1.0

以@ hamstergene的建议下,我子类的NSTextField,并提出了小样本应用程序。大多数情况下,它现在可以工作,但现在有一个小的布局问题,我怀疑是由于NSTextField的框架与自动布局所期望的不完全同步的结果。在下面的屏幕截图中,右侧标签全部在垂直方向上间隔排列,约束条件为top。当窗口调整大小时,Where字段得到正确调整和包装。然而,Kind文本字段不会被推下来,直到我调整窗口“多一个像素”。

例子:如果我调整窗口的大小,以恰到好处的宽度,该文本框Where做它的第一个包,然后我得到的中间图像中的结果。如果我调整窗口的大小再多一个像素,那么Kind字段的垂直位置就会被正确设置。

我怀疑这是因为自动布局正在通过,然后帧被明确设置。我想象一下,自动布局并没有看到那次通过,而是在下一次通过时做到这一点,并相应地更新位置。

假设是这个问题,我如何通知setFrameSize我正在做这些更改的自动布局,以便它可以再次运行布局。 (而且,最重要的是,不会陷入布局set-setSize-layout-recursive状态......)

解决方案

我拿出这似乎工作,我究竟是如何希望的解决方案。而不是继承NSTextField,我只是覆盖layout在NSTextField的superview。在layout内,我在文本字段上设置preferredMaxLayoutWidth,然后触发布局传递。这似乎足以让它主要工作,但它留下了令人讨厌的布局问题短暂“错误”。 (见上面的注释)。

解决方案似乎是打电话setNeedsDisplay,然后一切正常工作。

- (void)layout {

NSTextField *textField = ...;

NSRect oldTextFieldFrame = textField.frame;

[textField setPreferredMaxLayoutWidth:NSWidth(self.bounds) - NSMinX(textField.frame) - 12.0];

[super layout];

NSRect newTextFieldFrame = textField.frame;

if (oldTextFieldFrame.size.height != newTextFieldFrame.size.height) {

[self setNeedsDisplay:YES];

}

}

2014-07-07

kennyc

textfield自动换行html,使用自动布局自动换行NSTextField相关推荐

  1. HTML文件保存时关闭自动换行,如何禁止html自动换行

    禁止html自动换行的方法:1.给html元素添加"display:inline"样式,将元素设置为行内元素:2.给html元素添加"float:left"样式 ...

  2. html style自动换行,如何适应宽度自动换行?_html/css_WEB-ITnose

    aaa dddddddddddddddddddddddddddd aaa dddddddddddddddddddddddddddd 上面有没css的解决方案? 用js来适应的话过于复杂了,因为可能套很 ...

  3. html title自动换行,css控制文字自动换行的实现方法

    自动换行问题,正常字符的换行是比较合理的,而连续的数字和英文字符常常将容器撑大,挺让人头疼,下面介绍的是CSS如何实现换行的方法 对于div,p等块级元素 正常文字的换行(亚洲文字和非亚洲文字)元素拥 ...

  4. html怎样让文字自动换行,css中文字自动换行如何实现

    css中文字自动换行如何实现 在div css布局中,遇到连续英文字母或连续数字在div.p.h2.h1等盒子里排成一排显示不会自动随盒子宽度限制而自动换行. 当然中文字在DIV或任意盒子中均会自动换 ...

  5. html p自动换行超出省略,CSS自动换行、强制不换行、强制断行、超出显示省略号...

    CSS自动换行.强制不换行.强制断行.超出显示省略号 CSS自动换行.强制不换行.强制断行.超出显示省略号 CSS样式设置自动换行.强制不换行.强制断行.超出显示省略号 P标签是默认是自动换行的,因此 ...

  6. html中文本不自动换行,CSS禁止文本自动换行代码

    使用CSS样式 white-space:nowrap 可以定义某个区域内的内容是否可自动换行,默认是可以的.如果设置的值为 nowrap 将禁止自动换行,如上图所示.内容超过窗体可显示的区域外时将在浏 ...

  7. html中文本不自动换行,css文字不自动换行怎么解决?

    层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言. 文字不自动换行可 ...

  8. html字体变大自动换行,css 实现文字自动换行切同行元素高度自适应

    1.实现div行内布局所有行跟随最大高度自适应 html代码样例: 所在部门 @ViewBag.decideDetail.departName 岗位 @ViewBag.decideDetail.pos ...

  9. delphi memo 行数 自动换行_大咖分享办公秘籍:Word和Excel换行

    我们在日常办公和学习中,对文档进行整理和粘贴数据的过程中,经常会用到的就是换行功能了.那么怎么实现自动换行呢?下面,就由非凡学院商务办公培训专业的付老师,和大家分享一下在Word和Excel中简单的实 ...

最新文章

  1. FPGA 中的latch 锁存器
  2. 你一定听过这些不太标准的技术圈发音...
  3. codevs 5958 无
  4. 百度音乐下载地址解析
  5. c# SIM 卡拨号
  6. 离散数学第一章(知识点总结)
  7. 新版掌上阅读小说源码+支持公众号/分站/封装APP
  8. 矢量网络分析仪程控软件
  9. 怎么用计算机打游戏视频,网吧电脑可以边玩游戏边录视频吗?这样的方法很少人知道...
  10. PyTorch中view的用法
  11. 北京内推 | 秘塔科技招聘NLP算法工程师(社招校招可转正实习)
  12. linux磁盘满了删除docker文件夹,Docker磁盘空间使用分析与清理的方法
  13. 条码追溯系统解决外贸企业进销存管理
  14. linux 搭建 虚拟专用网络 (pptpd )
  15. Linux2.6.29设备模型分析-概述
  16. Selenium基于Python的web自动化测试框架(1)-环境搭建
  17. 论文解读:CRBPDL:使用集成神经网络方法识别 circRNA-RBP 相互作用位点
  18. WEBGUI中上一页(PgUp/Page Up)和下一页(PgDn/Page Down)键不起效
  19. 关于python 关于面向对象 关于magic method(魔方方法)
  20. 【系统分析师之路】第六章 多媒体基础知识

热门文章

  1. matplotlib绘制双柱状图
  2. opencv(c++)入门基础
  3. 8张JS 基础思维图,超详细!
  4. 展会回顾 | 2023元宇宙生态博览会圆满落幕,3DCAT荣获“元宇宙交互技术奖”
  5. C语言实现LRU缓存策略
  6. css: 使用线性渐变使图片变暗
  7. 三星p1000升级android10,三星 P1000 CM团队13.09.01定制 CM10.1 纯净版刷机包
  8. 最近很火的在线文件预览txt、doc、ppt、pdf、excel、jpg、png、zip、tar.gz等各种文件及压缩文件在线解压和预览,包括前后端设计和源码,编写搜索引擎多关键词检索名称和内容(五)
  9. Error resolving template
  10. 2023中国(上海)国际溴化工产业展览会