我通常使用下面的代碼來設置圓角。如何設置圓角適合模式的圓角UIImageView
imageView.layer.cornerRadius = 10
它在imageView設置爲Aspect Fill時起作用。
但是當imageView設置爲Aspect Fit模式,並且imageView和圖片之間的比率不同時。 圓角效果將無法辨別。
的背景顏色設置爲綠色用於示出圓角。
是否有任何方法將「真實圖像部分」設置爲圓角。
非常感謝您的回答。
我通常使用下面的代碼來設置圓角。如何設置圓角適合模式的圓角UIImageView
imageView.layer.cornerRadius = 10
它在imageView設置爲Aspect Fill時起作用。
但是當imageView設置爲Aspect Fit模式,並且imageView和圖片之間的比率不同時。 圓角效果將無法辨別。
的背景顏色設置爲綠色用於示出圓角。
是否有任何方法將「真實圖像部分」設置爲圓角。
非常感謝您的回答。
使用該擴展的UIImageView:
extension UIImageView
{
func roundCornersForAspectFit(radius: CGFloat)
{
if let image = self.image {
//calculate drawingRect
let boundsScale = self.bounds.size.width/self.bounds.size.height
let imageScale = image.size.width/image.size.height
var drawingRect: CGRect = self.bounds
if boundsScale > imageScale {
drawingRect.size.width = drawingRect.size.height * imageScale
drawingRect.origin.x = (self.bounds.size.width - drawingRect.size.width)/2
} else {
drawingRect.size.height = drawingRect.size.width/imageScale
drawingRect.origin.y = (self.bounds.size.height - drawingRect.size.height)/2
}
let path = UIBezierPath(roundedRect: drawingRect, cornerRadius: radius)
let mask = CAShapeLayer()
mask.path = path.cgPath
self.layer.mask = mask
}
}
}
感謝您分享代碼和結果。 – cowbjt
試試這個可以幫助你:
import UIKit
class ViewController: UIViewController{
@IBOutlet weak var myImageView: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
myImageView.contentMode = UIViewContentMode.ScaleAspectFit
myImageView.clipsToBounds = true
//myImageView.layer.cornerRadius = 10.0
myImageView.layer.masksToBounds = true
let simpleImage = UIImage(named:"ipad5_einladung.jpg")
let corneredImage = generateRoundCornerImage(simpleImage!, radius: 10)
//Set cornered Image
myImageView.image = corneredImage;
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func generateRoundCornerImage(image : UIImage , radius : CGFloat) -> UIImage {
let imageLayer = CALayer()
imageLayer.frame = CGRectMake(0, 0, image.size.width, image.size.height)
imageLayer.contents = image.CGImage
imageLayer.masksToBounds = true
imageLayer.cornerRadius = radius
UIGraphicsBeginImageContext(image.size)
imageLayer.renderInContext(UIGraphicsGetCurrentContext())
let roundedImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return roundedImage
}
}
首先,您需要的寬度和高度設置爲相同的值。然後設置像這樣的圖像屬性:
imgProfile_Pic.layer.cornerRadius = cell.imgProfile_Pic.frame.size.height/2
imgProfile_Pic.layer.borderWidth = 3.0
imgProfile_Pic.layer.borderColor = UIColor.white.cgColor
imgProfile_Pic.clipsToBounds = true
imgProfile_Pic.layoutIfNeeded()
這是非常簡單的圓形攝像畫面是這樣的:
self.profileImageView?.clipsToBounds = true
self.profileImageView!.layer.cornerRadius = 10
self.profileImageView?.layer.borderWidth = 1.0
self.profileImageView?.contentMode = .ScaleAspectFit
但爲了使圖像視圖與圖像比例四捨五入,我認爲您必須爲ScaleAspectFill模式設置圖像視圖。
他的問題是 「如何設置圓角適合模式的圓角UIImageView」他沒有要求縮放圖像 – iTarek
斯威夫特3版的有用的,接受的答案就在這裏!
extension UIImageView {
func roundCornersForAspectFit(radius: CGFloat)
{
if let image = self.image {
//calculate drawingRect
let boundsScale = self.bounds.size.width/self.bounds.size.height
let imageScale = image.size.width/image.size.height
var drawingRect : CGRect = self.bounds
if boundsScale > imageScale {
drawingRect.size.width = drawingRect.size.height * imageScale
drawingRect.origin.x = (self.bounds.size.width - drawingRect.size.width)/2
}else {
drawingRect.size.height = drawingRect.size.width/imageScale
drawingRect.origin.y = (self.bounds.size.height - drawingRect.size.height)/2
}
let path = UIBezierPath(roundedRect: drawingRect, cornerRadius: radius)
let mask = CAShapeLayer()
mask.path = path.cgPath
self.layer.mask = mask
}
}
}
請參閱本http://stackoverflow.com/a/30747684/3800154 –
或調整圖像視圖,以適應 – Wain