Guest User

Untitled

a guest
Mar 18th, 2018
288
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.29 KB | None | 0 0
  1. UIImageView *iv; // your image view
  2. CGSize imageSize = iv.image.size;
  3. CGFloat imageScale = fminf(CGRectGetWidth(iv.bounds)/imageSize.width, CGRectGetHeight(iv.bounds)/imageSize.height);
  4. CGSize scaledImageSize = CGSizeMake(imageSize.width*imageScale, imageSize.height*imageScale);
  5. CGRect imageFrame = CGRectMake(roundf(0.5f*(CGRectGetWidth(iv.bounds)-scaledImageSize.width)), roundf(0.5f*(CGRectGetHeight(iv.bounds)-scaledImageSize.height)), roundf(scaledImageSize.width), roundf(scaledImageSize.height));
  6.  
  7. @import AVFoundation;
  8.  
  9. AVMakeRectWithAspectRatioInsideRect(imageView.image.size, imageView.bounds);
  10.  
  11. CGRectIntegral(…)
  12.  
  13. if you want to calculate it yourself, use below code written by me.
  14.  
  15. func getImageFrameInImageView(imageView : UIImageView) -> CGRect {
  16. /*
  17. by 徐明刚, ericxu1983@163.com
  18. 算法:
  19. 设高宽比 r = h/w, 则:r(imageView) 缩写成r(v), r(image)缩写为r(i),
  20. if r(i) > r(v), 则
  21. h(i) = h(v),
  22. h(i) / w(i) = r(i) -> w(i) = h(i) / r(i)
  23. y = 0
  24. x = (w(v) / 2) - (w(i) / 2)
  25. 反之
  26. */
  27.  
  28. let image = imageView.image!
  29. let wi = image.size.width
  30. let hi = image.size.height
  31. print("wi:(wi), hi:(hi)")
  32.  
  33. let wv = imageView.frame.width
  34. let hv = imageView.frame.height
  35. print("wv:(wv), hv:(hv)")
  36.  
  37. let ri = hi / wi
  38. let rv = hv / wv
  39. print("ri:(ri), rv:(rv)")
  40.  
  41. var x, y, w, h: CGFloat
  42.  
  43. if ri > rv {
  44. h = hv
  45. w = h / ri
  46. x = (wv / 2) - (w / 2)
  47. y = 0
  48. } else {
  49. w = wv
  50. h = w * ri
  51. x = 0
  52. y = (hv / 2) - (h / 2)
  53. }
  54.  
  55. return CGRect(x: x, y: y, width: w, height: h)
  56. }
  57.  
  58. let frameIdentifyBorderView = UIView(frame: imageFrameInImageView)
  59. frameIdentifyBorderView.layer.borderWidth = 3
  60. frameIdentifyBorderView.layer.borderColor = UIColor.blueColor().CGColor
  61.  
  62. imageView.addSubview(frameIdentifyBorderView)
  63.  
  64. import UIKit
  65. import AVFoundation
  66.  
  67. class ViewController: UIViewController {
  68.  
  69. var imageView = UIImageView()
  70. override func viewDidLoad() {
  71. super.viewDidLoad()
  72. // Do any additional setup after loading the view, typically from a nib.
  73. imageView.frame = self.view.bounds
  74. imageView.contentMode = .scaleAspectFit
  75. imageView.backgroundColor = .blue
  76. imageView.autoresizingMask = [.flexibleWidth,.flexibleHeight]
  77. self.view.addSubview(imageView)
  78. }
  79.  
  80. override func viewWillAppear(_ animated: Bool) {
  81. super.viewWillAppear(animated)
  82.  
  83. URLSession.shared.dataTask(with: URL(string: "https://images.pexels.com/photos/248797/pexels-photo-248797.jpeg?w=940&h=650&dpr=2&auto=compress&cs=tinysrgb")!) { (data, response, error) in
  84. guard let dt = data else{print("error");return}
  85. DispatchQueue.main.async {
  86. guard let image = UIImage(data: dt) else{print("error");return}
  87. self.imageView.image = image
  88. self.imageView.layoutIfNeeded()
  89. let realImageRect = AVMakeRect(aspectRatio: image.size, insideRect: self.imageView.bounds)
  90.  
  91.  
  92. //proof
  93. let view = UIView(frame: realImageRect)
  94. view.layer.borderColor = UIColor.green.cgColor
  95. view.layer.borderWidth = 3
  96. self.view.addSubview(view)
  97. }
  98. }.resume()
  99. }
  100. }
Add Comment
Please, Sign In to add comment