#Swift版本的屏幕以及字体颜色适配

2016-12-12  本文已影响425人  以梦为码

Swift版本的屏幕以及字体颜色适配

这阵子一直在自学Swift, 因为之前iOS的开发一直用Objective-C, 所以习惯了C语言那种宏定义方式, Swift作为一款更加安全的语言, 放弃了C语言中的宏定义, 有效的防止预编译时代码宏替换的安全隐患, 但是也并非不能进行宏定义, 在这里我们可以像java一样进行全局常量的定义, 一样的方便快捷. 简单的宏通过常量设置即可, 复杂的宏就需要使用函数来返回了, 但是使用起来也会很方便, 下面我以工作中总结的一些经验,总结了一些Swift版本下4/4.7/5.5英寸屏幕适配,以及颜色适配宏:

屏幕缩放以iphone6屏幕尺寸为基础,通过设备与iphone6的比较返回一个比例,通过比例进行横向和纵向的缩放:

func Lhw_RateW() -> CGFloat{
  return (Lhw_ScreenW()/375)
}

高度适配上因为iphone4/4s不是按照之后0.8+:1的比例缩放,所以按照4寸屏一并处理(iphone4很多开发公司已经不支持兼容,我们也不作过多的考虑):

func Lhw_RateH() -> CGFloat{
var heighttmp:CGFloat = 0.0
if Lhw_ScreenH() == 480 {
    heighttmp = 568
}else{
    heighttmp = Lhw_ScreenH()
}
return heighttmp/667
}

通过输入的值返回不同的屏幕下的缩放后大小:

//W方向   
func Lhw_AdaptW(W: CGFloat) -> CGFloat {
    return W*Lhw_RateW()
}

//H方向
func Lhw_SLAdaptH(H: CGFloat) -> CGFloat {
if H == 667 && Lhw_ScreenH() == 480 {
    return 568
}else{
    return H*Lhw_RateH()
}
}

另外入如lable,textfield这些控件需要用到字体时考虑下下面的font缩放,当控件大小和字体大小一起缩放时,在一种设备上能显示完整,那么在其他设备上也都能完整显示:

func Lhw__font(fontSize:CGFloat) -> UIFont {
let fot =  UIFont.systemFont(ofSize: 12)
return  fot
}

使用:

       var logolable = UILabel.init(frame: CGRect.init(x: 0, y: Lhw_AdaptH(H: 20), width: Lhw_AdaptW(W: 82), height: Lhw_AdaptW(W: 20)))
    logolable.font=Lhw__font(fontSize: 13)

需要注意的是控件位置,大小需要考虑父控件是否缩放再考虑是否需要让子控件缩放,像系统导航栏,tabbar这个固定大小的控件作为父控件时,在其上放置子空间建议不用缩放
图片控件横向与纵向一起缩放时,图片也是不会变形的
资源地址:https://github.com/qq690658234/ios-swift-1.0/tree/master

上一篇 下一篇

猜你喜欢

热点阅读