Ios iPhone X上UIScrollView左侧不需要的空白
Ios iPhone X上UIScrollView左侧不需要的空白,ios,uiscrollview,background-color,iphone-x,safearealayoutguide,Ios,Uiscrollview,Background Color,Iphone X,Safearealayoutguide,UIScrollView在除iPhone X之外的所有iPad或iPhone上,如果没有左侧的空白,则可以正常工作。如何删除空白 我使用故事板。滚动/缩放时反弹均已禁用。iPad或iPhone上除了iphonex没有空白。我想这可能与安全区域有关 设置与安全区域相关的约束对于iPhone-X来说是一个很好的实践。 苹果是这样说的- 当视图在屏幕上可见时,本指南反映了 导航栏、选项卡栏、工具栏、, 和其他祖先的观点 在您的情况下,您使用的是安全区域,而不是超级视图 因此,如果您冒险将约束设置为su
UIScrollView
在除iPhone X之外的所有iPad或iPhone上,如果没有左侧的空白,则可以正常工作。如何删除空白
我使用故事板。滚动/缩放时反弹均已禁用。iPad或iPhone上除了iphonex没有空白。我想这可能与安全区域有关
设置与
安全区域相关的约束对于iPhone-X来说是一个很好的实践。
苹果是这样说的-
当视图在屏幕上可见时,本指南反映了
导航栏、选项卡栏、工具栏、,
和其他祖先的观点
在您的情况下,您使用的是安全区域,而不是超级视图
因此,如果您冒险将约束设置为superview
而不是safeArea
,您的对象内容可能会被剪切,特别是当您向左旋转时,最左侧的内容将被剪切到iPhone-X的最顶端
负责此空白
第一选项:
忽略scrollview的安全区域布局,并设置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
}
以下是关于安全区域布局的参考答案,以便于更好地理解:
此间距来自安全区域,它作为iPhone X上横向的内容插入应用于UIScrollview的左/右,可以使用只读属性查看
当您不需要时,可以使用以下行删除安全区域插图:
UIScrollview.contentInsetAdjustmentBehavior=.never
默认值为UIScrollViewContentInsertAdjustmentBehavior.automatic
将安全区域布局指南页边距作为内容插入
注意:自动布局约束与插图无关,它只是iOS 11 UIScrollview内容插图调整行为。好吧,我用一种不优雅的方式解决了这个问题。但它就像一个符咒。(我尝试了所有其他答案。感谢您的帮助,但是这些答案在我的情况下似乎不起作用。)
你在用故事板吗?你看过安全区吗?我用故事板<代码>滚动反弹/缩放
均已禁用。除了iPhone X,iPad或iPhone上没有空白。我认为这可能与安全区域有关……如果你设置了限制,使其通过安全区域并到达超级视图的末尾,那么它可能会工作,但你确实没有提供足够的信息,因此可能会有很多东西共享你的代码和故事板设计。因此,我可以为您提供完整的解决方案。在iPhone-X中,为了防止对象从角落被剪裁,notch-iOS11+附带了safeArea
I忘记选择“使用安全区域布局指南”。但是,我无法获得安全区域左侧或右侧白色条边距的宽度。@zsong,您可以查看更多参考资料。@AamirR看到这对VFL没有任何影响。我的scrollview上的图像仍在安全区域内被挤压,不会延伸到所有侧面的边缘。
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: ...
)