1. 程式人生 > >Quinn's blog ! I'm glad to be here!

Quinn's blog ! I'm glad to be here!

數學推導 比例縮法填充,滿足最大邊填充,故此,首先找出相對於填充的最大邊

 let fromW = from.width
 let fromH = from.height
 
 let toH = to.height
 let toW = to.width
 
 let fromRadio = fromH/fromW
 let toRadio = toH/toW
 
 如果 fromRadio>toRadio
 則  H為最大邊,否則W為相對來講的最大邊
 此時 確定出 radioH = 1
 可得出 此時 from的縮放為(toH/fromH)
 newfromW = fromW * (toH/fromH)
 此時:已知 newfromW,toW,求變換比例
 toW * radioW = newfromW
 radioW = newfromW / toW = fromW * (toH/fromH)/ toW
 
 同理:fromRadio>toRadio時:
 radioW = 1
 from的縮放為(toW/fromW)
 newfromH = fromH * (toW/fromW)
 radioH = fromH * (toW/fromW) / toH

證明完畢:

Swift4 程式碼如下:

 func getSizeRadio(from:CGSize,to:CGSize)->(CGFloat,CGFloat){
     let fromW = from.width
     let fromH = from.height
     
     let toH = to.height
     let toW = to.width
     
     let fromRadio = fromH/fromW
     let toRadio = toH/toW
     
     
     var radioW:CGFloat = 1
     var radioH:CGFloat = 1
     
     if fromRadio>toRadio{
         radioH = 1
         radioW = fromW * (toH/fromH)/toW
     }else{
         radioH = fromH * (toW/fromW)/toH
         radioW = 1
     }
     return (radioW,radioH)
 }