UIImageViewにボーダーを追加するのは、レイヤー(borderWidth、borderColorなど)を使用するとかなり簡単です。イメージビューではなく、イメージに境界線を追加する可能性はありますか?誰かが知っていますか?swiでuiimageに色付きの枠を追加する方法
更新:
私はウント以下の提案に従ってみましたが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
多かれ少なかれ望ましい結果を持つ2番目の画像を追加しました。 – Roman