youngsoft/TangramKit

布局高度问题,希望作者解答一下

Closed this issue · 14 comments

主 TGLinearLayout(.vert),添加两个2子布局,子布局1:TGLinearLayout(.vert)嵌套uibutton和uilabel,子布局2:TGLinearLayout(.horz),嵌套uibutton,结果:子布局1跟子布局2出现重叠,
image

这种情况应该是没有指定子布局的高度导致的把。不清楚您的代码是怎么写的?方便贴出来吗?

子布局,,我都是用.wrap

这种情况应该是没有指定子布局的高度导致的把。不清楚您的代码是怎么写的?方便贴出来吗?

子布局,,我都是用.wrap,代码都在上面

这个应该是你的两个子布局设置了tg_gravity属性和宽高是wrap相冲突。对于垂直方向来说如果tg_gravity设置居中就意味着垂直方向必须要有明确的高度,但是你又设置wrap表明依赖子视图,所以这里就出现问题了。你要设置tg_gravity时需要注意方向。

子布局中垂直布局了,一个按钮,一个文字,想子布局按钮文字都居中,所以设置tg_gravity,按道理来说是正常的了,如果设置tg_gravity,需要高度不就是有问题了,那就没办法自适应了

你的代码是同时设置水平和垂直居中。你只要设置一个方向居中即可。

两个子布局,应该是设置水平,一个设置垂直居中,应该算正常吧,如果我把垂直居中去掉吧,文字就没办法居中,会变成这样
image

你两个子布局,一个水平居中即可,一个设置垂直居中即可。 但是两个都不要设置为水平和垂直居中。tg_gravity = TGGravity.center是表明水平和垂直都居中,你可以设置tg_gravity = TGGravity.horz.center或者TGGravity.vert.center即可。

你两个子布局,一个水平居中即可,一个设置垂直居中即可。 但是两个都不要设置为水平和垂直居中。tg_gravity = TGGravity.center是表明水平和垂直都居中,你可以设置tg_gravity = TGGravity.horz.center或者TGGravity.vert.center即可。

这个问题很明显,你的cancelLinear是一个垂直线性布局,然后你设置高度是.wrap也就意味着布局的高度是由所有子视图的高度累加组成,那么你设置tg_gravity的值为TGGravity.vert.center的目的是什么?你是希望里面的子视图都垂直居中吗?既然你的布局视图高度是由所有子视图的高度累加的,那么请问设置垂直居中有什么意义或者目的?这本身就是一种冲突行为。这种情况下你可以设置tg_gravity的值为TGGravity.horz.center就表明里面的子视图水平居中,这时候虽然你的布局视图宽度也是wrap的,但是我这里会做特殊处理。

感谢欧阳大哥解答

感谢欧阳大哥解答 😄 果然看issue 还是有帮助的