UISlider为什么只有水平方向?为什么没有垂直方向?
好吧,你说垂直方向可以通过旋转来实现,那么问题来了。
我在编辑器里面加了个Slider,由于没有垂直方向,只好通过旋转实现,选好适配方案,到游戏里面适配就不对了。
因为适配的时候宽度适配对应控件的宽,高度适配对应控件的高,由于宽高缩放比例不一致,用宽度适配计算出来的Slider宽度旋转之后跟实际想要的高度不一致。
虽然有点绕,不过大概就是这个意思。
怎么解决?
因为适配的时候宽度适配对应控件的宽,高度适配对应控件的高,由于宽高缩放比例不一致,用宽度适配计算出来的Slider宽度旋转之后跟实际想要的高度不一致。
这句话没明白
源码中LayoutComponent::refreshLayout()这个函数里面,控件适配后的ownerSize是根据_percentWidth,_percentHeight计算出来的,没旋转的时候这样计算没问题,如果旋转了90度,控件的width变成了垂直方向的长度,那适配的计算是不是应该根据_percentHeight来计算?上图。
实际上这个看起来高=400的玩意适配应该拿_percentHeight来计算,但是因为实际上它是宽=400,旋转90°得来的,所以计算的时候就用了_percentWidth。适配的也是屏幕宽的缩放比。
一切根源就是因为slider没有垂直方向的选项。
不过同理,所有旋转过90度的控件,应该都会有适配上的问题
按照你的意思:如果slider是45度的,那么适配就换成对角线了?
这个不行啊,每个用户的需求不同,鱼和熊掌我们只能取一个。。。。
如果你有这个需求,你需要代码实现,不过slider的垂直方向,我会反馈这个建议的。
感谢对cocos的支持!
如果cocostudio不提供对旋转过的对象的适配,那也是没问题的,但是旋转之后还是按正常的去计算,得出了一个错误的结果,感觉这就不太合理了。