আমি আবিষ্কার করেছি যে এমন একটি উত্তর পাওয়া মুশকিল যে আপনি নিজের বাক্সের বাইরে বাক্স ব্যবহার করতে পারেন সুইফট 3 প্রকল্পের । অন্যান্য উত্তরের প্রধান সমস্যা যা তারা চিত্রের আলফা-চ্যানেলকে সম্মান করে না। আমি আমার প্রকল্পগুলিতে যে কৌশলটি ব্যবহার করছি তা এখানে।
extension UIImage {
func scaledToFit(toSize newSize: CGSize) -> UIImage {
if (size.width < newSize.width && size.height < newSize.height) {
return copy() as! UIImage
}
let widthScale = newSize.width / size.width
let heightScale = newSize.height / size.height
let scaleFactor = widthScale < heightScale ? widthScale : heightScale
let scaledSize = CGSize(width: size.width * scaleFactor, height: size.height * scaleFactor)
return self.scaled(toSize: scaledSize, in: CGRect(x: 0.0, y: 0.0, width: scaledSize.width, height: scaledSize.height))
}
func scaled(toSize newSize: CGSize, in rect: CGRect) -> UIImage {
if UIScreen.main.scale == 2.0 {
UIGraphicsBeginImageContextWithOptions(newSize, !hasAlphaChannel, 2.0)
}
else {
UIGraphicsBeginImageContext(newSize)
}
draw(in: rect)
let newImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return newImage ?? UIImage()
}
var hasAlphaChannel: Bool {
guard let alpha = cgImage?.alphaInfo else {
return false
}
return alpha == CGImageAlphaInfo.first ||
alpha == CGImageAlphaInfo.last ||
alpha == CGImageAlphaInfo.premultipliedFirst ||
alpha == CGImageAlphaInfo.premultipliedLast
}
}
ব্যবহারের উদাহরণ:
override func viewDidLoad() {
super.viewDidLoad()
let size = CGSize(width: 14.0, height: 14.0)
if let image = UIImage(named: "barbell")?.scaledToFit(toSize: size) {
let imageView = UIImageView(image: image)
imageView.center = CGPoint(x: 100, y: 100)
view.addSubview(imageView)
}
}
এই কোডটি একটি পুনর্লিখন আলফা চ্যানেল সহ এবং ছাড়াই চিত্রগুলির জন্য অতিরিক্ত অ্যাপলের এক্সটেনশনের ।
আরও পড়া হিসাবে আমি বিভিন্ন চিত্র পুনরায় আকার দেওয়ার কৌশলগুলির জন্য এই নিবন্ধটি পরীক্ষা করার পরামর্শ দিচ্ছি । বর্তমান পদ্ধতির শালীন কর্মক্ষমতা উপলব্ধ করা হয়, এটি উচ্চ-স্তরের এপিআই এবং বোঝার জন্য সহজ পরিচালনা করে। আমি যদি আপনি দেখতে না পান যে চিত্রের আকার পরিবর্তন করা আপনার কর্মক্ষমতাতে কোনও বাধা unless