【发布时间】:2018-06-02 16:07:27
【问题描述】:
使用图层(borderWidth、borderColor 等)向 UIImageView 添加边框非常容易。是否有可能为图像添加边框,而不是图像视图?有人知道吗?
更新:
我尝试遵循以下建议并使用extension。谢谢你,但我没有得到想要的结果。这是我的代码。怎么了?
import UIKit
class ViewController: UIViewController {
var imageView: UIImageView!
var sizeW = CGFloat()
var sizeH = CGFloat()
override func viewDidLoad() {
super.viewDidLoad()
sizeW = view.frame.width
sizeH = view.frame.height
setImage()
}
func setImage(){
//add image view
imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: sizeW/2, height: sizeH/2))
imageView.center = view.center
imageView.tintColor = UIColor.orange
imageView.contentMode = UIViewContentMode.scaleAspectFit
let imgOriginal = UIImage(named: "plum")!.withRenderingMode(.alwaysTemplate)
let borderImage = imgOriginal.imageWithBorder(width: 2, color: UIColor.blue)
imageView.image = borderImage
view.addSubview(imageView)
}
}
extension UIImage {
func imageWithBorder(width: CGFloat, color: UIColor) -> UIImage? {
let square = CGSize(width: min(size.width, size.height) + width * 2, height: min(size.width, size.height) + width * 2)
let imageView = UIImageView(frame: CGRect(origin: CGPoint(x: 0, y: 0), size: square))
imageView.contentMode = .center
imageView.image = self
imageView.layer.borderWidth = width
imageView.layer.borderColor = color.cgColor
UIGraphicsBeginImageContextWithOptions(imageView.bounds.size, false, scale)
guard let context = UIGraphicsGetCurrentContext() else { return nil }
imageView.layer.render(in: context)
let result = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return result
}
}
带有红色边框的第二张图片或多或少是我需要的:
【问题讨论】:
-
你到底需要什么?
-
我需要一个红色边框,比如说,在李子本身周围而不是在图像视图周围有一个borderWidth 3的红色边框。我怎么能得到它?
-
我添加了第二张照片,效果或多或少。
-
任何解决方案@roman
标签: ios swift image image-processing border