全屏布局

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了全屏布局相关的知识,希望对你有一定的参考价值。

参考技术A

全屏布局应用:管理系统、监控平台、统计平台等。
全屏布局特点:1、缩放屏幕,页面始终撑满浏览器窗口;2、滚动条控制局部区域。
下面我们来实现一种 全屏布局 ,它的整体宽度自适应、高度固定,横向分为三栏,分别为顶栏、主内容区、底栏,顶栏与底栏定高,主内容区高度自适应。主内容区又分为左边栏和右边栏,左边栏定宽,右边栏宽高自适应。滚动条出现在右边栏。
以下介绍两种方法1、position;2、flex。
1、 使用position 。分为两步,第一步,确定位置,我们可以把整个页面分为上、左、右、下四大块,然后设置position:absolute,使用left、top、right、bottom对每块进行定位。第二步,设置滚动条。在需要设置滚动的right上设置overflow: auto;当right里面内容块的高度超过某个值后,right出现滚动条。 戳我查看演示。
2、 使用flex 。flex有一个属性- flex-direction ,它的值为row | row-reverse | column | column-reverse。可以使用它形成横向布局。 戳我查看演示。
注意:使用flex存在浏览器 兼容性问题
设置宽高除了使用px形式,还可以使用百分比形式。
上面假定的是顶栏、底栏、左边栏设置了固定的宽或高,假如我想 自适应宽(高)度 呢?
自适应的话,使用position貌似做不到,因为主内容区的position定位依赖于顶栏与底栏的固定高度。我们可以使用flex来实现上述要求,还有一种Grid方法,但由于Grid在W3c中还是草案,所以也就不做介绍。
使用flex实现全屏布局内容自适应只需要把之前设定的固定宽高值删除,浏览器就会默认该元素宽高自适应。
最后,比较一下使用Position、Flex、Grid三种方案实现全屏布局:

参考网易前端微专业全屏布局。

使用自动布局使 UIView 全屏

【中文标题】使用自动布局使 UIView 全屏【英文标题】:make UIView full screen using autolayout 【发布时间】:2015-02-05 15:23:12 【问题描述】:

我开始使用自动布局,我的 UIViewController 的 self.view 不再占据 iPhone 6 或 iPhone 6plus 的整个屏幕。 UIView 的大小是 size = inferred。

我查看了我的 VC 主视图的约束条件,但约束编辑器不允许我选择我希望顶部、左侧、右侧和底部的距离为 0,0,0,0查看到窗口的边缘。

【问题讨论】:

【参考方案1】:

我做了一个在 UIView 下添加白色蒙版的函数(如果你是 UIView 的子类)

func addBackgroundMask()
    backgroundMask = UIView()
    backgroundMask?.backgroundColor = UIColor(red: 1.0, green: 1.0, blue: 1.0, alpha: 0.6)
    backgroundMask?.setTranslatesAutoresizingMaskIntoConstraints(false)

    let topConstraint = NSLayoutConstraint(item: backgroundMask!, attribute:NSLayoutAttribute.Top, relatedBy:NSLayoutRelation.Equal, toItem:superview, attribute:NSLayoutAttribute.Top, multiplier:1.0, constant:0.0)

    let bottomConstraint = NSLayoutConstraint(item: backgroundMask!, attribute:NSLayoutAttribute.Bottom, relatedBy:NSLayoutRelation.Equal, toItem:superview, attribute:NSLayoutAttribute.Bottom, multiplier:1.0, constant:0.0)

    let leftConstraint = NSLayoutConstraint(item: backgroundMask!, attribute:NSLayoutAttribute.Left, relatedBy:NSLayoutRelation.Equal, toItem:superview, attribute:NSLayoutAttribute.Left, multiplier:1.0, constant:0.0)

    let rightConstraint = NSLayoutConstraint(item: backgroundMask!, attribute:NSLayoutAttribute.Right, relatedBy:NSLayoutRelation.Equal, toItem:superview, attribute:NSLayoutAttribute.Right, multiplier:1.0, constant:0.0)

    superview?.insertSubview(backgroundMask!, belowSubview: self)

    superview?.addConstraint(topConstraint)
    superview?.addConstraint(bottomConstraint)
    superview?.addConstraint(leftConstraint)
    superview?.addConstraint(rightConstraint)


【讨论】:

以上是关于全屏布局的主要内容,如果未能解决你的问题,请参考以下文章

具有自动布局的全屏 UICollectionViewCell

全屏布局

如何设置自动布局使图像占据全屏?

AVPlayerController:全屏自动布局问题

全屏页面布局

使用自动布局使 UIView 全屏