Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 调整大小及;布局:如何实现此设计?_Objective C_Xcode_Cocoa_Nsview_Nstextfield - Fatal编程技术网

Objective c 调整大小及;布局:如何实现此设计?

Objective c 调整大小及;布局:如何实现此设计?,objective-c,xcode,cocoa,nsview,nstextfield,Objective C,Xcode,Cocoa,Nsview,Nstextfield,好的,这看起来很简单,但我已经挣扎了太久,所以我决定寻求一些帮助 Basical,我有一个容器视图 内容包括(从左到右): NSSegmentedControl 一个NSTextField NSSegmentedControl 它们都是水平排列的(=它们在同一条“线上”) 我想做的是: 固定第一个元素的宽度,并固定在左侧 可调整大小的文本字段 固定最后一个元素的宽度,并固定在右侧 我想这是不言自明的 以下是我对3个视图的自动调整大小设置: 视图1 视图2 视图3 问题是:整个尺

好的,这看起来很简单,但我已经挣扎了太久,所以我决定寻求一些帮助

Basical,我有一个容器视图

内容包括(从左到右):

  • NSSegmentedControl
  • 一个
    NSTextField
  • NSSegmentedControl
它们都是水平排列的(=它们在同一条“线上”)

我想做的是:

  • 固定第一个元素的宽度,并固定在左侧
  • 可调整大小的文本字段
  • 固定最后一个元素的宽度,并固定在右侧
我想这是不言自明的


以下是我对3个视图的自动调整大小设置:

视图1

视图2

视图3


问题是:整个尺寸调整工作正常。直到文本字段在折叠点调整大小。当superview/容器的大小再次调整为正常大小时,整个设计就乱七八糟了(文本字段溢出了容器,还有很多这样奇怪的问题)

发生什么事了?有什么建议吗



注意:我使用了自动布局(仅设置“自动布局”和“添加(添加)缺失的约束”),但我绝对希望避免它,因为它对性能的影响是巨大的——总体设计相当复杂,有很多嵌套,所以让我们坚持老式的方式。:-)

使用自动调整大小遮罩的旧springs和struts模型基于大小变化的比例分布,该变化基于正在调整大小的子视图的当前大小。一旦任何子视图的大小变为零,它就会失控。要么是零除,要么是零乘,结果都是假的。这是该系统的一个长期问题

必须设置最小窗口大小以防止发生这种情况


自动布局是解决这一问题的方法,也是旧模型的许多其他缺陷,尽管它的所有缺陷都有可能存在。

很可能没有自动布局,你必须手动完成帧更新(这仍然适用于很多应用程序)。:我是否可以仅为该特定视图(及其内容)启用自动布局,而保持其余视图不变?(注意:所有的遮罩都是通过Interface Builder设置的)您可以将视图构建为一系列独立的NIB,其中一些设置为具有自动布局,而另一些设置为不具有自动布局,并将整个内容粘贴到view中。启用窗口粒度的自动布局。如果窗口中的任何视图使用自动布局,则整个窗口使用自动布局。也就是说,您不必为给定视图启用自动布局。如果未设置
TranslatesAutoResizengMaskintoConstraints
(IB未为您设置),则该视图的自动调整大小掩码将转换为以相同方式工作的约束。这可以避免您的一些工作,但不会使运行时的效率更高。这是有道理的。让我试试!非常感谢!;-)基本上是这样的:当我恢复到自动调整遮罩大小时,仍然有一个自定义视图使用自动布局(以编程方式)。过了一段时间,我在控制台中不断出现错误+窗口似乎根本无法调整大小。。。非常奇怪…
无法同时满足约束:(“”,“”,“”,“”,“”)
因为您使用的是自动布局(因为窗口中的任何视图都需要它),所以您必须小心与视图交互的约束,这些视图的
translatesAutoResizengMaskintoConstraints
为真<代码>平移自动调整大小GMaskintoConstraints会生成约束,这些约束根据设置的最后一帧以及此后发生的superview大小调整完全确定视图的大小和位置。对该视图的任何附加约束都可能试图对其执行其他操作,这将产生冲突。因此,此类视图通常不应包含在约束中。看起来您将视图嵌入到使用自动布局的拆分视图中。拆分视图将对视图应用约束以使其保持在位。如果您的视图将自动调整大小转换为约束,则可能会出现问题。如果这是包含您在问题中描述的三个视图的容器视图,则容器应禁用
TranslatesAutoResizezingMaskinToConstraints
,而三个控件应启用该视图(并且不应对其容器superview设置约束)。