如何删除不希望保留超级视图继承边距的 tableView 单元格的顶部和左侧边距?

     2023-03-15     201

关键词:

【中文标题】如何删除不希望保留超级视图继承边距的 tableView 单元格的顶部和左侧边距?【英文标题】:How to remove the top and left margin of a tableView's cell that doesn't expect to preserve the super view's inherited margins? 【发布时间】:2016-06-21 10:58:00 【问题描述】:

最初,我有一个利用默认 layoutMargin 的单元格

(lldb) po self.contentView.layoutMargins
▿ UIEdgeInsets
  - top : 8.0
  - left : 8.0  ... 
  - bottom : 8.0  ... 
  - right : 8.0  ... 

我希望我的表格视图在利用布局边距的同时自动调整单元格大小,因此,我完成了这个设置一些约束:

NSLayoutConstraint.activateConstraints([
    NSLayoutConstraint(item: self.stackView, attribute: .Top, relatedBy: .Equal, toItem: self.contentView, attribute: .TopMargin, multiplier: 1, constant: 0),
    NSLayoutConstraint(item: self.stackView, attribute: .Bottom, relatedBy: .Equal, toItem: self.contentView, attribute: .BottomMargin, multiplier: 1, constant: 0),
    NSLayoutConstraint(item: self.stackView, attribute: .Leading, relatedBy: .Equal, toItem: self.contentView, attribute: .LeadingMargin, multiplier: 1, constant: 0),
    NSLayoutConstraint(item: self.stackView, attribute: .Trailing, relatedBy: .Equal, toItem: self.contentView, attribute: .TrailingMargin, multiplier: 1, constant: 0)
    ])

目前看起来不错!

我现在想手动更新我的 contentView 的 layoutMargin,所以我这样做了:

self.contentView.preservesSuperviewLayoutMargins = false
self.contentView.layoutMargins = UIEdgeInsetsMake(0, 0, 0, 0)

我希望将所有现有的插图设置为 0。他们是!说实话:

(lldb) po self.contentView.layoutMargins
▿ UIEdgeInsets
  - top : 0.0
  - left : 0.0  ... 
  - bottom : 0.0  ... 
  - right : 0.0  ... 

但是,我的界面是这样的:

是什么导致我的单元格的顶部和左侧边距具有该边距?

我在这里错过了什么?

谢谢!

【问题讨论】:

我没有直接的答案,但您可能想使用 Xcode 的查看调试功能来捕获屏幕并查看运行时影响间距的因素。 使用 IB 时的好建议。我实际上是添加了 2 个附加约束,其中包含我忘记的前导常量和顶部常量。现在已经修好了。 【参考方案1】:

问题中描述的解决方案实际上可以正常工作。但是,我忘记了代码中的一些限制:

NSLayoutConstraint(item: self.stackView, attribute: .Leading, relatedBy: .Equal, toItem: self.contentView, attribute: .Leading, multiplier: 1, constant: 15),
NSLayoutConstraint(item: self.stackView, attribute: .Top, relatedBy: .Equal, toItem: self.contentView, attribute: .Top, multiplier: 1, constant: 15)

这些限制当然是添加了我不希望的顶部和领先边距。

我对任何面临类似问题的人的建议是密切关注在整个代码中添加的所有约束。

【讨论】:

iOS Autolayout:如何显示/隐藏包含边距的视图?

】iOSAutolayout:如何显示/隐藏包含边距的视图?【英文标题】:iOSAutolayout:Howtoshow/hideaviewincludingitsmargins?【发布时间】:2019-08-2609:23:39【问题描述】:假设如下,简单的布局:三个视图垂直堆叠在一起在视图之间使用简单的垂直... 查看详情

如何创建不添加边距的边框?

】如何创建不添加边距的边框?【英文标题】:Howtocreateaborderthatdoes\'taddamargin?【发布时间】:2015-06-1006:54:11【问题描述】:我是HTML/CSS新手,正在学习Bootstrap。我正在编写一个Bootstrap导航栏,但遇到了一点小困难,这是我所做工... 查看详情

在没有边距的视图中均匀分布

】在没有边距的视图中均匀分布【英文标题】:Spaceevenlyacrossaviewwithoutmargins【发布时间】:2015-03-1110:01:10【问题描述】:我使用以下函数在一个视图中分隔动态数量的视图(使用自动布局):-(NSArray*)spaceViews:(NSArray*)viewsonAxis:(UIL... 查看详情

它使没有边距的视图膨胀

】它使没有边距的视图膨胀【英文标题】:Itinflatetheviewwithoutthemargin【发布时间】:2011-12-0414:04:15【问题描述】:我有这个代码Viewitem=View.inflate(context,R.layout.item_layout,null);LinearLayout.LayoutParamsparams=newLinearLayout.LayoutParams(LayoutParams. 查看详情

如何将约束添加到相对于父视图边距的按钮,使其显示为距上边距 30 和距右边距 30

】如何将约束添加到相对于父视图边距的按钮,使其显示为距上边距30和距右边距30【英文标题】:HowtoAddConstrainttoabuttonrelativetoparentview\'smarginsothatitappears30fromtopmarginand30fromrightmargin【发布时间】:2017-07-0320:12:15【问题描述】:这... 查看详情

对边距的影响?

...一个cardivew和一个背景颜色,就这么简单。通过单击任何视图(视图1、视图2...)动态添加其他布局。这些新布局“推动”了包含Cardview的Linearlayout。我认为这不会影响我想要达到的效果。我想得到你在下一张图片中看到的效果。... 查看详情

以编程方式创建绑定到视图控制器边距的约束

】以编程方式创建绑定到视图控制器边距的约束【英文标题】:Programmaticallycreatingconstraintsboundtoviewcontrollermargins【发布时间】:2016-04-0818:45:24【问题描述】:我正在尝试创建一个视图,该视图将充当一种“面板”,连接到视图控... 查看详情

带有自动边距的网格 - Windows Phone 8.1 Silverlight

...来不太好,如果我不指定边距,网格就会超出移动屏幕。如何在布局内保持自动边距和网格& 查看详情

如何将边缘设置为零?

】如何将边缘设置为零?【英文标题】:Howtosetedgestozero?【发布时间】:2017-08-2101:14:29【问题描述】:我正在使用Auto-Layout将子视图的前导设置为与父视图的前导相等,因此设置顶部和右侧。但是,例如,下图中白色块的原点仍... 查看详情

如何定位具有相同边距的 div 左、右和上

】如何定位具有相同边距的div左、右和上【英文标题】:Howtopositionadivwithequalmarginsforleft,right,andtop【发布时间】:2015-07-0911:50:45【问题描述】:我想实现如下所示的布局:我对仅使用css/html的解决方案感兴趣,因此不需要javascript... 查看详情

尝试更改 iOS 中私有视图的布局边距的客户端错误

】尝试更改iOS中私有视图的布局边距的客户端错误【英文标题】:ClienterrorattemptingtochangelayoutmarginsofaprivateviewiniOS【发布时间】:2019-09-2608:15:06【问题描述】:您好,我有一个在Xcode10.4中运行的应用程序,应用程序运行良好,没... 查看详情

有关如何使用边距的信息

】有关如何使用边距的信息【英文标题】:Informationonhowtousemargins【发布时间】:2010-09-1109:20:22【问题描述】:我需要一些关于如何使用边距以及padding的工作原理的信息。例如:我应该放一条线来占据页面的整个宽度(无论使用... 查看详情

如何增加vim中行号边距的间距?

】如何增加vim中行号边距的间距?【英文标题】:HowdoIincreasethespacingofthelinenumbermargininvim?【发布时间】:2011-02-0116:18:38【问题描述】:我在vim中的配色方案有问题:(来源:tinygrab.com)行号与代码太接近。如何增加行号右边距的... 查看详情

DIV 内有边距的子元素

...div元素之间强制留有空白。这是一种奇怪的行为,因为我希望p的边距保持在div的内容和背景区域内。它在Firefox、Chrome 查看详情

无法取消选中对边距的约束

...题描述】:当我试图将ImageView放在自定义单元格中时,我希望图像占据该单元格中的所有空间而没有边距。但我发现单元格左侧总是有一个灰色边缘。我认为这是限制到保证金的问题,但复选框似乎是灰色的,即使我取消选中它... 查看详情

UIViewController 嵌套视图到屏幕边缘

...时,子视图跨越超级视图的左右边缘,在两侧留下边距。如何在不在约束中添加负值的情况下删除此边距?【问题讨论】:【参考方案1】:假设您使用的是Xcode6...在设 查看详情

如何从超级视图中删除视图?

】如何从超级视图中删除视图?【英文标题】:HowtoremoveViewfromsuperView?【发布时间】:2014-05-0212:49:42【问题描述】:我创建了一个xib,并通过以下代码将其显示在视图中。NSArray*xibContents=[[NSBundlemainBundle]loadNibNamed:@"PickupAddressView"ow... 查看详情

解决 jQuery UI 在动画时不考虑边距的问题

】解决jQueryUI在动画时不考虑边距的问题【英文标题】:WorkaroundforwhenjQueryUIdoesn\'taccountformarginswhenanimating【发布时间】:2018-12-1410:21:54【问题描述】:-你好,世界!-标题很好地总结了我正在努力解决的问题。我找不到任何有这... 查看详情