Я хотел бы создать MKAnnotationView, который выглядит следующим образом.Как создать округленное изображение с границей и тенью как MKAnnotationView в Swift?
код у меня уже есть:
func maskRoundedImage(image: UIImage, radius: Float) -> UIImage {
let imageView: UIImageView = UIImageView(image: image)
var layer: CALayer = CALayer()
layer = imageView.layer
layer.masksToBounds = true
layer.cornerRadius = CGFloat(radius)
layer.borderWidth = 4.0
layer.borderColor = UIColor.whiteColor().CGColor
UIGraphicsBeginImageContext(imageView.bounds.size)
layer.renderInContext(UIGraphicsGetCurrentContext()!)
let roundedImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return roundedImage
}
func imageResize (image:UIImage, sizeChange:CGSize)-> UIImage{
let hasAlpha = true
let scale: CGFloat = 0.0 // Use scale factor of main screen
UIGraphicsBeginImageContextWithOptions(sizeChange, !hasAlpha, scale)
image.drawInRect(CGRect(origin: CGPointZero, size: sizeChange))
let scaledImage = UIGraphicsGetImageFromCurrentImageContext()
return scaledImage
}
func mapView(mapView: MKMapView, viewForAnnotation annotation: MKAnnotation) -> MKAnnotationView? {
let annotationReuseId = "Place"
var anView = mapView.dequeueReusableAnnotationViewWithIdentifier(annotationReuseId)
if anView == nil {
anView = MKAnnotationView(annotation: annotation, reuseIdentifier: annotationReuseId)
} else {
anView!.annotation = annotation
}
let imageString = User.UserData.base64String
let image = convertBase64ToImage(imageString!)
let size = CGSizeMake(40, 40)
let resizedImage = imageResize(image, sizeChange: size)
anView?.image = maskRoundedImage(resizedImage, radius: 20)
anView!.backgroundColor = UIColor.clearColor()
anView!.canShowCallout = true
return anView
}
Дело мое изображение очень низкого качества. У вас есть идеи, что я могу сделать, чтобы улучшить качество и как добавить тень?
@ Это работает :) Единственное, что мне пришлось изменить, это добавить CGColor после whiteColor(). Любая идея, как добавить тень под ним, как в верхней картине? – toobiz
Ах, извините, полностью забыл CGColor, это правильно, это необходимо. Что касается тени, вы можете сделать: 1 - импортировать QuartzCore, 2 - использовать anView.layer.shadowOffset, anView.layer.shadowRadius, anView.layer.shadowOPacity. Это должно делать свое дело. –
К сожалению, это не работает. Я прочитал, что для того, чтобы поместить тень под UIImageView, вы должны встроить ее в UIView и установить тень в UIView. Как я могу это достичь? – toobiz