- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在使用 NSStackView(在 OS X 10.9.4 上),但有点卡住了。本质上,我正在创建一个页脚 View 并向该页脚添加一个堆栈 View 。我希望将一些项目分组到页脚的左侧,并将一些项目分组到右侧。我认为这可以通过根据需要将 View 分配给前导和尾随重力来完成。但是,我似乎无法达到预期的效果。
NSView* footerView = [[NSView alloc] initWithFrame:CGRectZero];
footerView.translatesAutoresizingMaskIntoConstraints = NO;
self.footerView = footerView;
NSStackView* stackView = [[NSStackView alloc] init];
stackView.translatesAutoresizingMaskIntoConstraints = NO;
self.stackView = stackView;
[self.footerView addSubview:stackView];
NSTextField* firstTextField = [[NSTextField alloc] init];
firstTextField.translatesAutoresizingMaskIntoConstraints = NO;
firstTextField.bezeled = NO;
firstTextField.editable = NO;
firstTextField.stringValue = @"One";
self.firstTextField = firstTextField;
[self.stackView addView:firstTextField inGravity:NSStackViewGravityLeading];
NSTextField* secondTextField = [[NSTextField alloc] init];
secondTextField.translatesAutoresizingMaskIntoConstraints = NO;
secondTextField.bezeled = NO;
secondTextField.editable = NO;
secondTextField.stringValue = @"Two";
self.secondTextField = secondTextField;
[self.stackView addView:secondTextField
inGravity:NSStackViewGravityLeading];
NSTextField* thirdTextField = [[NSTextField alloc] init];
thirdTextField.translatesAutoresizingMaskIntoConstraints = NO;
thirdTextField.bezeled = NO;
thirdTextField.editable = NO;
thirdTextField.stringValue = @"Three";
self.thirdTextField = thirdTextField;
[self.stackView addView:thirdTextField inGravity:NSStackViewGravityLeading];
NSTextField* fourthTextField = [[NSTextField alloc] init];
fourthTextField.translatesAutoresizingMaskIntoConstraints = NO;
fourthTextField.bezeled = NO;
fourthTextField.editable = NO;
fourthTextField.stringValue = @"Four";
self.fourthTextFeild = fourthTextField;
[self.stackView addView:fourthTextField
inGravity:NSStackViewGravityTrailing];
NSTextField* fifthTextField = [[NSTextField alloc] init];
fifthTextField.translatesAutoresizingMaskIntoConstraints = NO;
fifthTextField.bezeled = NO;
fifthTextField.editable = NO;
fifthTextField.stringValue = @"Five";
self.fifthTextField = fifthTextField;
[self.stackView addView:fifthTextField
inGravity:NSStackViewGravityTrailing];
[self.window.contentView addSubview:footerView];
NSDictionary* views = @{
@"footerView" : self.footerView,
@"stackView" : self.stackView
};
[self.window.contentView
addConstraints:[NSLayoutConstraint
constraintsWithVisualFormat:@"V:[footerView(==30)]|"
options:0
metrics:nil
views:views]];
[self.window.contentView
addConstraints:[NSLayoutConstraint
constraintsWithVisualFormat:@"H:|[footerView]|"
options:0
metrics:nil
views:views]];
[self.footerView
addConstraints:[NSLayoutConstraint
constraintsWithVisualFormat:@"H:|-[stackView]-|"
options:0
metrics:nil
views:views]];
[self.footerView
addConstraints:[NSLayoutConstraint
constraintsWithVisualFormat:@"V:|[stackView]|"
options:0
metrics:nil
views:views]];
如果我只添加前三个文本字段,那么它们都会在前导区域中正确分组在一起。
但是,当我添加尾随区域 View 时,前导区域中的 View 会跳向尾随区域
从 NSStackView 的 spacer 属性文档中,我看到了
In combination, these constraints result in the following typical stack view behavior: In a stack view whose hasEqualSpacing property is set to NO (the default) and whose hugging priority is left at NSLayoutPriorityDefaultLow (the default), views within a gravity area remain a fixed distance from each other (equal to the value of the spacing property), and the distance between gravity areas grows and shrinks as the stack view grows and shrinks along its layout direction axis.
但是,这似乎并没有发生。重力区域(前导)内 View 之间的间距不是恒定的,并且,它似乎将其设置为间隔距离,而不是增大/缩小重力区域之间的距离。
我希望一、二、三出现在页脚左侧(按默认距离间隔),四、五出现在页脚右侧。我可以尝试通过使用两个不同的堆栈 View (一个用于前导区域,另一个用于尾部区域)来实现这一点,但是,我认为这应该可以通过单个堆栈 View 和重力区域来实现。希望对此有一些指导。谢谢
最佳答案
NSStackView
的 spacing
属性的文档显示重力区域间间距设置为 spacing
值(默认为 8点)以及堆栈 View 在该方向上配置的拥抱优先级(默认为 NSLayoutPriorityDefaultLow
)。
如果文本字段的内容拥抱优先级低于该值,则自动布局系统将更愿意拉伸(stretch)其中一个而不是重力区域间的间距。这就是为什么其中一个文本字段被拉伸(stretch),如您的问题所示。 (如果文本字段具有相同的内容拥抱优先级,则拉伸(stretch)哪个文本字段是任意的,并且可以随时更改。)
如果文本字段的内容拥抱优先级等于堆栈 View 的拥抱优先级,那么拉伸(stretch)的内容是任意的。它可以是文本字段之一,也可以是重力区域间的间距。
您希望使文本字段具有更高的内容拥抱优先级,正如您在答案中所指出的那样。它不需要是 NSLayoutPriorityDragThatCanResizeWindow。它可以是高于堆栈 View 的拥抱优先级的任何值。
正如您在答案中所报告的那样,这与限制窗口缩小无关。
如果您希望堆栈 View 允许自身缩小到比其 subview 和 subview 之间的间距指示的尺寸更窄,您有两个选择。首先,您可以使用 -setClippingResistancePriority:forOrientation:
将其剪切阻力优先级设置为低于 NSLayoutPriorityWindowSizeStayPut
。这将导致堆栈 View 允许 View 被剪切或分离。发生哪一种情况取决于 View 的可见性优先级,由 setVisibilityPriority:forView:
设置。默认情况下,所有 View 的可见性优先级均为 NSStackViewVisibilityPriorityMustHold
,这意味着它们不会分离,但会被剪裁。
因此,如果您希望分离 View ,则应该更改它们的可见性优先级。您应该对优先级进行排序,以指示相对于其他 View (较高),您希望首先分离哪些 View (较低的可见性优先级)。
另一种方法是将 subview 的抗压缩优先级设置为低于NSLayoutPriorityWindowSizeStayPut
。这意味着自动布局系统将压缩文本字段,通常用省略号(“...”)截断它们。您可能希望对文本字段的压缩阻力优先级进行排序,以确定它们的压缩顺序,否则它将是任意的(甚至可能随时发生变化)。您可能还想在文本字段上设置最小宽度限制,因为在某些时候,让文本字段可见但没有空间显示任何有意义的内容看起来很糟糕。
您可以通过使文本字段的压缩阻力低于堆栈 View 的剪切阻力来组合这两种方法。文本字段的最小宽度限制可能会很高,甚至是必需的;无论如何,都高于堆栈 View 的剪切阻力。因此,当窗口和堆栈 View 缩小时,文本字段将压缩直到达到最小宽度,然后下一个文本字段将压缩,依此类推。当所有文本字段都达到最小宽度时,堆栈 View 将剪切或分离它们(按可见性优先顺序)直到它们再次适合。
关于cocoa - NSStackView 的 View 间距不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28971317/
这个问题已经有答案了: How to do case insensitive string comparison? (23 个回答) 已关闭 3 年前。 用户在我的输入栏中写入“足球”,然后执行第 6
啊,不习惯 javascript 中的字符串。 character_id= + id + correct= + correctOrIncorrect 这就是我需要制作成字符串的内容。如果您无法猜测字符
$(function() { var base_price = 0; CalculatePrice(); $(".math1").on('change', function(e) { Calc
我找不到任何文章回答问题:将Spinnaker部署到Spinnaker将管理的同一Kubernetes集群是否安全/正确?我主要是指生产,HA部署。 最佳答案 我认为Spinnaker和Kuberne
我正在使用MSVC在Windows上从源代码(官方源代码发布,而不是从仓库中)构建Qt5(Qt 5.15.0)。 我正在设置环境。变量,依赖项等,然后运行具有1600万个选项的configure,最后
我需要打印一个包含重复单词的数组。我的数组已经可以工作,但我不知道如何正确计算单词数。我已经知道,当我的索引计数器 (i) 为 49 时,并且当 (i) 想要计数到 50 时,我会收到错误,但我不知道
我正在遵循一个指南,该指南允许 Google map 屏幕根据屏幕尺寸禁用滚动。我唯一挣扎的部分是编写一个代码,当我手动调整屏幕大小时动态更改 True/False 值。 这是我按照说明操作的网站,但
我有一个类“FileButton”。它的目的是将文件链接到 JButton,FileButton 继承自 JButton。子类继承自此以使用链接到按钮的文件做有用的事情。 JingleCardButt
我的 friend 数组只返回一个数字而不是所有数字。 ($myfriends = 3) 应该是…… ($myfriends = 3 5 7 8 9 12). 如果我让它进入 while 循环……整个
这个问题在这里已经有了答案: Is there a workaround to make CSS classes with names that start with numbers valid?
我正在制作一个 JavaScript 函数,当调整窗口大小时,它会自动将 div 的大小调整为与窗口相同的宽度/高度。 该功能非常基本,但我注意到在调整窗口大小时出现明显的“绘制”滞后。在 JS fi
此问题的基本视觉效果可在 http://sevenx.de/demo/bootstrap-carousel/inc.carousel/tabbed-slider.html 获得。 - 如果你想看一看。
我明白,如果我想从函数返回一个字符串文字或一个数组,我应该将其声明为静态的,这样当被调用的函数被返回时,内容就不会“消亡”。 但我的问题是,当我在函数内部使用 malloc 分配内存时会怎样? 在下面
在 mySQL 数据库中存储 true/false/1/0 值最合适(读取数据消耗最少)的数据字段是什么? 我以前使用过一个字符长的 tinyint,但我不确定它是否是最佳解决方案? 谢谢! 最佳答案
我想一次读取并处理CSV文件第一行中的条目(例如打印)。我假设使用Unix风格的\n换行符,没有条目长度超过255个字符,并且(现在)在EOF之前有一个换行符。这意味着它是fgets()后跟strto
所以,我们都知道 -1 > 2u == true 的 C/C++ 有符号/无符号比较规则,并且我有一种情况,我想有效地实现“正确”比较。 我的问题是,考虑到人们熟悉的尽可能多的架构,哪种方法更有效。显
**摘要:**文章的标题看似自相矛盾。 本文分享自华为云社区《Java异常处理:如何写出“正确”但被编译器认为有语法错误的程序》,作者: Jerry Wang 。 文章的标题看似自相矛盾,然而我在“正
我有一个数据框,看起来像: dataDemo % mutate_each(funs(ifelse(. == '.', REF, as.character(.))), -POS) # POS REF
有人可以帮助我使用 VBScript 重新格式化/正确格式化带分隔符的文本文件吗? 我有一个文本文件 ^分界如下: AGREE^NAME^ADD1^ADD2^ADD3^ADD4^PCODE^BAL^A
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
我是一名优秀的程序员,十分优秀!