UIScrollView
在除iPhone X之外的所有iPad或iPhone上没有左侧空白区域时工作正常。如何删除空格?
我使用故事板。弹出滚动/缩放全部被禁用。除iPhone X外,iPad或iPhone上没有空白区域。我认为它可能与安全区域有关。
答案 0 :(得分:7)
此间距来自安全区域,安全区域应用于UIScrollview的左/右,因为iPhone X上的内容以横向方式插入,可以使用只读属性UIScrollview.safeAreaInsets
查看。
以下行可用于在您不需要时删除安全区域插入内容:
UIScrollview.contentInsetAdjustmentBehavior = .never
默认值为UIScrollViewContentInsetAdjustmentBehavior.automatic
包括安全区域布局指南边距作为内容插入。
注意:自动布局约束与insets无关,它只是iOS 11 UIScrollview内容插入调整行为。
答案 1 :(得分:4)
设置相对于safeArea
的约束是iPhone-X的好习惯。
这就是苹果所说的 -
当视图在屏幕上可见时,本指南反映了该部分 导航栏,标签栏,工具栏未覆盖的视图, 和其他祖先观点。
在您的情况下,您正在提供约束leading
& trailing
scrollView
safeArea
superView
,superview
因此,如果您对safeArea
而不是Message.Type msgType = in.type();
// All messages have the frame length, message type, and message itself.
int headerLength = 8 + msgType.encodedLength() + in.encodedLength();
// long frameLength = headerLength + bodyLength;
ByteBuf header = ctx.alloc().heapBuffer(headerLength);
//header.writeLong(frameLength);
header.writeLong(headerLength);
msgType.encode(header);
in.encode(header);
采取风险约束,您的对象内容可能会被剪裁,特别是当您向左旋转时,最左侧的内容将剪切在iPhone-X的顶层。
答案 2 :(得分:1)
嗯,我以非优雅的方式解决了这个问题。但它就像一个魅力。 (我尝试了所有其他答案。感谢您的帮助,但这些答案在我的案例中似乎不起作用。)
var leftMargin: CGFloat = 0
var rightMargin: CGFloat = 0
if Device.isPhone() && Device.IS_5_8_INCHES() {
self.leftMargin = 44
self.rightMargin = 44
}
let frame = CGRect(
x: (self.view.frame.width - self.leftMargin - self.rightMargin) * CGFloat(pageIndex),
y: ...
)
答案 3 :(得分:-1)
Safe Area Layout负责此空格。
第一个选项:
忽略滚动视图的安全区域布局,并根据超视图(或主视图)设置scrollview的约束。滚动时,Scrollview会自动处理内容的安全区域插入。
景观视图:
纵向视图:
第二选项:
我不建议删除/更改滚动视图的安全区域布局以及可解决空白区域可见性问题的备用解决方案:
在viewDidLoad
@ IBOutlet var scrollView: UIScrollView!
override func viewDidLoad(){
super.viewDidLoad()
self.view.backgroundColor = UIColor.yellow // set here blue color that you've applied for your scroll view
self.scrollView.backgroundColor = UIColor.clear
}
以下是有关安全区域布局的良好参考答案,以便更好地理解: