专栏首页程序员读书笔记Mac开发Storybaord之Autoresizing理解
原创

Mac开发Storybaord之Autoresizing理解

Mac应用之Autosizing

一:保持左右间距不变,宽随窗口变化而变化(保持顶部间距不变)

注意:想要保持左右间距不变,那宽一定要可变,除了要勾选左右两个选项,中间表示宽可变的也得勾选。倘若中间不勾选,这时候宽不可变,其实际效果相当于只勾选了左边间距不变,右边勾选相当于无效选项。

当我们左右两边只勾选一个的时候,就表示左右单边间距不变;如果两边都勾选了,其效果就得看中间是否勾选了——中间勾选了表示左右间距都不变,只有宽变化;中间无勾选的话,相当于右边是个无效勾选,左边间距不变,宽也不变。

上图设置等同编码:

setAutoresizingMask:NSViewWidthSizable|NSViewMinYMargin

注意:我们很容易在编码上以为要做到左右间距不变,宽随窗口变化而变化时写成NSViewWidthSizable|NSViewMaxXMargin|NSViewMinXMargin,如果写成这样,就表示左右间距和宽都随着窗口等比例变化了。

二:左右间距和宽随着窗口等比例变化(保持顶部间距不变)

上图设置等同编码:

setAutoresizingMask:NSViewWidthSizable|NSViewMinYMargin|NSViewMaxXMargin|NSViewMinXMargin

根据上面两个用例,得出结论:

编码的时候,单独使用下面标记,

NSViewMinYMargin——对应顶部间距不变

NSViewMaxYMargin——对应底部间距不变

NSViewMinXMargin——对应右边间距不变

NSViewMaxXMargin——对应左边间距不变

在编码的时候MinX与MaxX若要同时使用,那一定是要加上NSViewWidthSizable,否则是无意义的。我们很容易以为想要左右两边不变,mask用NSViewMinXMargin|NSViewMaxXMargin,既然没有配合NSViewWidthSizable,它无意义。那配上上之后(NSViewMinXMargin|NSViewMaxXMargin|NSViewWidthSizable),却又不是我们想要的左右间距不变,只有宽变,而是宽与间距都等比变。

三:右边间距不变,左边间距与宽按比例变化

上图设置等同编码:

setAutoresizingMask:NSViewMaxYMargin|NSViewMinXMargin|NSViewWidthSizable

再得结论:

左右两边一边间距不变,宽与另一边间距按比例变化与编码看起来比较匹配,也不会有什么误会。只是我们很容易搞错,以为NSViewMinXMargin是对应左边间距,其实是对应右边间距不变。storyboard上边缘(上下左右),勾选表示不变,不勾选表示变化,而宽高却相反,勾选表示变化,不勾选表示不变。左右只有一边勾选,中间可选可不选。当左右都勾选的时候,中间的宽一定要勾选,否则无意义。

对于上下变化与间距,其逻辑与左右变化类似,不详述了。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Encoding and Decoding Custom Types

    许多编程任务涉及通过网络连接发送数据,将数据保存到磁盘或将数据提交到API和服务。 这些任务通常要求在传输数据时将数据编码和解码为中间格式。

    SheltonWan
  • Swift学习总结

    5、switch语法与objc差别很大,执行一个分支马上停止,不需要break语句跳出,反而想要穿透到下面分支还要用fallthrough语句。

    SheltonWan
  • UIViewController present UIViewController 的问题

    func application(_ application: UIApplication, didFinishLaunchingWithOptions lau...

    SheltonWan
  • Python入门学习(六)

    上面函数中, 需要两个参数分别是 x, y. 这两个参数都是必选参数, 缺一不可. pow函数中 x 为底数, y 为指数, 现在我想让指数默认为 2

    py3study
  • Python进阶教程(二)

    概述 在上一篇博客中,我们介绍了Python进阶教程(一),还有一些新的技巧没有翻译完,我们下面来继续我们的翻译。 Intermediate Python 中译...

    BrianLv
  • python数据分析万字干货!一个数据集全方位解读pandas

    说到python与数据分析,那肯定少不了pandas的身影,本文希望通过分析经典的NBA数据集来系统的全方位讲解pandas包,建议搭配IDE一遍敲一边读哦。话...

    TechFlow-承志
  • #PY小贴士# 函数的默认参数不会每次都新建?

    这里的原因在于,函数的参数默认值,是在一开始定义(也就是 def)的时候所决定的,并不是到执行时才创建。我换一个例子,就看得更明白了:

    Crossin先生
  • JAVA程序第四期

    小朱在晚间黄金时间准时播报,另外,公众号又来了几位新的管理,所以以后每天的作者和风格可能会有不同哦,先期待一下吧!

    聚沙成塔
  • vs 2010 不显示解决方案文件

    vs 2010 不显示解决方案文件的问题早就遇到过,而且也能很容易的解决,唯独这次太郁闷了,先说说之前的我办法吧,像往常一样,在工具栏里面找到 =>工具==>选...

    Java中文社群_老王
  • Docker和宿主机操作系统文件目录互相隔离的实现原理

    我们知道在Docker容器里是无法访问到宿主操作系统的文件目录的,但这种隔离是怎么实现的呢?

    Jerry Wang

扫码关注云+社区

领取腾讯云代金券