我试图重新创建这样的内容,在那里我拉出用户的图像,然后覆盖"更改"标签在上面 - 但我似乎无法弄清楚如何。
(我也希望有一些与此标签相关的动作(例如,segue到新页面))
我的问题:我似乎无法弄清楚如何覆盖文本标签,但仍保持图像的圆形,并使图像的底部具有不透明的标签。
代码+详细信息:我有一个自定义UIView,其中包含一个Imageview-当我想添加一个图像时,我调用以下代码:
self.userProfilePic.addImage((userImg).roundImage(), factorin: 0.95)
在自定义视图中,这是图像的添加方式:
func addImage(imagein: UIImage, factorin:Float)
{
let img = imagein
imageScalingFactor = factorin
if imageView == nil
{
imageView = UIImageView(image: img)
imageView?.contentMode = .ScaleAspectFit
self.addSubview(imageView!)
self.sendSubviewToBack(imageView!)
imageView!.image = img
}
}
这是我的图像舍入代码(我不想碰):
extension UIImage
{
func roundImage() -> UIImage
{
let newImage = self.copy() as! UIImage
let cornerRadius = self.size.height/2
UIGraphicsBeginImageContextWithOptions(self.size, false, 1.0)
let bounds = CGRect(origin: CGPointZero, size: self.size)
UIBezierPath(roundedRect: bounds, cornerRadius: cornerRadius).addClip()
newImage.drawInRect(bounds)
let finalImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return finalImage
}
}
任何帮助将不胜感激!
答案 0 :(得分:1)
尝试类似此视图层次结构的内容
UIView
!
!--UIImageView
!--UIButton
所以你选择UIView',首先添加UIImageView,而不是在图像视图的下半部分添加UIButton。现在将clipToBounds设置为yes。现在将此父视图层的所需角半径设置为如下
parentView.layer.cornerRadius = parentVirew.frame.size.width;
请记住,您必须制作方形尺寸的父视图,表示高度和宽度。获取圆形遮罩的宽度应该相同。稍微调整按钮位置。你肯定会得到结果。