youngsoft / TangramKit

TangramKit is a powerful iOS UI framework implemented by Swift. It integrates the functions with Android layout,iOS AutoLayout,SizeClass, HTML CSS float and flexbox and bootstrap. So you can use LinearLayout,RelativeLayout,FrameLayout,TableLayout,FlowLayout,FloatLayout,LayoutSizeClass to build your App 自动布局 UIView UITableView UICollectionView
MIT License
1.21k stars 175 forks source link

你好,我是跟着你的框架学的ios开发,有一个问题想请教一下 #36

Closed LikeNeko closed 5 years ago

LikeNeko commented 5 years ago

用的你的框架,感觉很好用,现在有一个问题不知道怎么解决:

我现在的布局的尺寸写死的都是以375的设计图,比如这样self.tg_top.equal(100)的代码到处都是。在自己的xs上显示是正常的,但是到6sp的系统上运行位置就会错误。

然后我百度查了一下,用下面的代码填上6sp和xs显示的位置都正常了 self.tg_top.equal(floor(CGFloat(Float(100) * Float((UIScreen.main.bounds.width/375.0)))))`

这里我试过了用百分比,但内边距self.tg_rightPadding并不能用百分比设置,就会导致内边距xs和6sp错位

请问是不是有更好的办法呢?不使用我百度查到的方法。 看文档中说的SizeClass是不是和我的问题有关? 我不是很能理解SizeClass怎么用,这里好像只和横竖屏的配置有关?

LikeNeko commented 5 years ago

如果没有更好的办法似乎只能全文改equal()里的值改成计算之后的了

youngsoft commented 5 years ago
  1. 对于SizeClass 主要是用于解决横竖屏的差异适配,以及plus系列的横屏特殊处理,以及iPad的适配问题。从您的描述中SizeClass看来是不能满足的。
  2. 目前针对各种屏幕适配的场景尽量可能的话用相对比例值,以及多用.fill属性而不要写死宽高。 3.目前针对padding的设置确实只支持固定值。 4.如果你想针对不同屏幕按比例来进行缩放的话,可以参考使用TGDimeAdapter这个类里面的一些方法,这个类是封装floor(CGFloat(Float(100) * Float((UIScreen.main.bounds.width/375.0)))) 中的实现。
LikeNeko commented 5 years ago

明白了,谢谢

LikeNeko commented 5 years ago

针对这个问题是否可以将TGDimeAdapter类封装在equal()方法里呢?然后加个配置,如果指定的话就执行一下方法?