水平 UIStackView 中 UISlider 的高度
height of UISlider in a horizontal UIStackView
UIStackView
中横轴排列的子视图必须与UIStackView
的高度相同。然而,对于 UISlider
来说,情况并非如此。无论我为 UIStackView
设置的高度如何,堆栈视图中 UISlider
的高度都会高出 1px。
我将 UIStackView
的高度设置为 40,并且没有为 UISlider
设置任何自动布局。
但是 UISlider
的高度是 41,我预计是 40。
有什么原因吗?以及解决此问题的任何方法?
UISlider
似乎在调整大小方面做了一些奇怪的事情。
暂时忽略堆栈视图,如果您简单地将宽度和高度约束应用于 UISlider
,它们将不匹配 实际 的宽度和高度运行-时间。您将获得额外的 4-pts
宽度和额外的 1-pt
高度。
不过...
如果相对于滑块约束另一个视图,则另一个视图尊重滑块的约束,而不是滑块的呈现大小。
从调试视图层次结构中查看此图像捕获:
- 滑块有
width = 100
height = 40
但橙色矩形(滑块背景)实际上是 104 x 41
- 如果您在 运行 时 print(mySlider.frame)
就会得到这个。
左标签有
trailing = slider.leading
height = slider.height
centerY = slider.centerY
右标签有
leading = slider.trailing
height = slider.height
centerY = slider.centerY
两个标签高度正好是 40 磅 - 这与 约束条件 相匹配。
另请注意,标签框架 与滑块背景 2-pts
重叠 ,表明标签 x 定位再次与 匹配约束,而不是渲染的滑块视图框架。
如果在滑块嵌入 UIStackView
时检查视图,您会看到(好吧,您 已经 看到)框架大小大于堆栈视图的框架。但是,滑块的框架将 扩展到堆栈视图的实际框架之外 ...堆栈视图(及其其他排列的子视图)将继续遵守您给它的约束。
所有这些都是说...如果 "size mismatch" 没有引起任何问题,我就不会担心。
UIStackView
中横轴排列的子视图必须与UIStackView
的高度相同。然而,对于 UISlider
来说,情况并非如此。无论我为 UIStackView
设置的高度如何,堆栈视图中 UISlider
的高度都会高出 1px。
我将 UIStackView
的高度设置为 40,并且没有为 UISlider
设置任何自动布局。
但是 UISlider
的高度是 41,我预计是 40。
有什么原因吗?以及解决此问题的任何方法?
UISlider
似乎在调整大小方面做了一些奇怪的事情。
暂时忽略堆栈视图,如果您简单地将宽度和高度约束应用于 UISlider
,它们将不匹配 实际 的宽度和高度运行-时间。您将获得额外的 4-pts
宽度和额外的 1-pt
高度。
不过...
如果相对于滑块约束另一个视图,则另一个视图尊重滑块的约束,而不是滑块的呈现大小。
从调试视图层次结构中查看此图像捕获:
- 滑块有
width = 100
height = 40
但橙色矩形(滑块背景)实际上是 104 x 41
- 如果您在 运行 时 print(mySlider.frame)
就会得到这个。
左标签有
trailing = slider.leading
height = slider.height
centerY = slider.centerY
右标签有
leading = slider.trailing
height = slider.height
centerY = slider.centerY
两个标签高度正好是 40 磅 - 这与 约束条件 相匹配。
另请注意,标签框架 与滑块背景 2-pts
重叠 ,表明标签 x 定位再次与 匹配约束,而不是渲染的滑块视图框架。
如果在滑块嵌入 UIStackView
时检查视图,您会看到(好吧,您 已经 看到)框架大小大于堆栈视图的框架。但是,滑块的框架将 扩展到堆栈视图的实际框架之外 ...堆栈视图(及其其他排列的子视图)将继续遵守您给它的约束。
所有这些都是说...如果 "size mismatch" 没有引起任何问题,我就不会担心。