为啥flex-shrink属性不起作用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥flex-shrink属性不起作用相关的知识,希望对你有一定的参考价值。
参考技术A 用法错误flex-grow控制flex container有多余空间的时候怎么分配,默认值为0,即所有的flex items都不分配。
flex-shrink1则控制flex container空间不足以包含flex items时,flex items怎样缩小所占空间,来防止溢出container。其默认值为1,flex items们根据自身的flex-basis值做相应调整。
看一个示例:
代码如下 复制代码
<div class='example-Grid'>
<div class='example-first'>汇成一道道光的流河</div>
<div class='example-last'>我曾在天上见过地的繁华</div>
</div>
<style>
.example-Grid
display: flex;
border: 2px solid black;
width: 250px;
.example-first
background: red;
flex-basis: 150px;
flex-shrink: 1;
.example-last
background:orange;
flex-basis: 200px;
flex-shrink:1;
</style>
为啥标记为@IBInspectable 的属性不起作用?
【中文标题】为啥标记为@IBInspectable 的属性不起作用?【英文标题】:Why properties tagged @IBInspectable is not working?为什么标记为@IBInspectable 的属性不起作用? 【发布时间】:2016-10-18 08:33:45 【问题描述】:我在这里按照tutorial 创建了一个可检查和可设计的视图。我只想在UIView
中添加边框颜色、边框宽度和圆角边框功能。
我已经成功展示了这些属性。但不管我在情节提要上设置了什么,结果仍然就像他们不在那里一样。没有边框,即使我将边框设置为宽度为 2 且颜色为黑色。它没有在情节提要和运行时显示。我已将边框设置为 2 宽度,但在运行时,我在 didViewLoad 处打印边框宽度值,结果为 0。可能有什么问题?
@IBDesignable extension view: UIView
@IBInspectable var cornerRadius: CGFloat
get
return layer.cornerRadius
set
layer.cornerRadius = newValue
layer.masksToBounds = newValue > 0
@IBInspectable var borderWidth: CGFloat
get
return layer.borderWidth;
set
layer.borderWidth = borderWidth;
@IBInspectable var borderColor: UIColor?
get
return UIColor(CGColor: layer.borderColor!);
set
layer.borderColor = borderColor?.CGColor
这也不起作用:
@IBDesignable class BOView: UIView
@IBInspectable var cornerRadius: CGFloat
get
return layer.cornerRadius
set
layer.cornerRadius = newValue
layer.masksToBounds = newValue > 0
@IBInspectable var borderWidth: CGFloat
get
return layer.borderWidth;
set
layer.borderWidth = borderWidth;
@IBInspectable var borderColor: UIColor?
get
return UIColor(CGColor: layer.borderColor!);
set
layer.borderColor = borderColor?.CGColor
【问题讨论】:
你在 IB 中打开菜单Editor
➜ Automatically Refresh Views
了吗?
@holex 该选项已打开。
【参考方案1】:
尝试使用 newValue 而不是实际值。
例如,
@IBInspectable var borderWidth: CGFloat
get
return layer.borderWidth
set
layer.borderWidth = newValue
Chen,我确实更喜欢您这样做的方式,但也请注意,您可以直接从 Storyboard 中尝试做的事情,而无需使用 IBDesignable。您可以在用户定义的运行时属性中设置图层属性。
【讨论】:
你在发布之前检查过这个答案吗?有用吗? 哦哦哦原来是这样!是的,我需要使用newValue
而不是变量名。谢谢!!!!但是 IBDesignable 仍然不起作用......但这是一个很大的飞跃!
等等,IBDesignable 现在可以工作了!!我不知道为什么!也许我需要关闭并重新打开 Xcode。谢谢!
很高兴。你的扩展有效吗?它可能真的很方便。
@CarienvanZyl 是的!现在有一个全新的世界和可能性在我面前打开了哈哈。我必须实现控制器并运行它的日子已经一去不复返了,只是为了看看边框是什么样子的。我认为这个可检查和可设计的东西非常复杂,所以直到现在我才去了解它。哦,我离真相太远了,哈哈。以上是关于为啥flex-shrink属性不起作用的主要内容,如果未能解决你的问题,请参考以下文章
为啥 `android:foreground` 属性不起作用?