前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mac开发Storybaord之Autoresizing理解

Mac开发Storybaord之Autoresizing理解

原创
作者头像
SheltonWan
修改2020-06-03 17:53:50
1K0
修改2020-06-03 17:53:50
举报

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上边缘(上下左右),勾选表示不变,不勾选表示变化,而宽高却相反,勾选表示变化,不勾选表示不变。左右只有一边勾选,中间可选可不选。当左右都勾选的时候,中间的宽一定要勾选,否则无意义。

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

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档