如何在swift中制作不同形状的imageview [英] How to make imageview with different shape in swift
问题描述
我想将正常的ios imageview更改为下面的图像形状(如弧形)
I want to change the normal ios imageview to this below image shape(Like arc)
推荐答案
您可以根据需要使用它来设计形状,您可以在修改贝塞尔曲线所需的路径中添加额外的线条路径。创建一个自定义UIImageView类,并将storyboard中的图像视图子类化为您的自定义类。
You can use this to design the shape as per your requirement, you can add extra lines to the path incase you need to modify the bezier path. Create a custom UIImageView class and subclass the image view in storyboard to your custom class.
import UIKit
class customImageView: UIImageView {
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
// override func drawRect(rect: CGRect)
// {
//
//
// }
override func setNeedsLayout() {
let path = UIBezierPath()
path.moveToPoint(CGPoint(x: self.frame.size.width/2, y: self.frame.size.height))
path.addLineToPoint(CGPoint(x: self.frame.size.width, y: self.frame.size.height/2))
path.addLineToPoint(CGPoint(x: self.frame.size.width/2, y: 0))
path.addArcWithCenter(CGPoint(x: self.frame.size.width/2, y: self.frame.size.height/2), radius: self.frame.size.width/2, startAngle:-CGFloat(M_PI_2), endAngle: CGFloat(M_PI_2), clockwise: false)
path.moveToPoint(CGPoint(x: self.frame.size.width/2, y: self.frame.size.height))
path.closePath()
UIColor.redColor().setFill()
path.stroke()
path.bezierPathByReversingPath()
let shapeLayer = CAShapeLayer()
shapeLayer.frame = self.bounds
shapeLayer.path = path.CGPath
shapeLayer.fillColor = UIColor.redColor().CGColor
self.layer.mask = shapeLayer;
self.layer.masksToBounds = true;
}
}
如果要添加图像通过代码友好地使用它像这样
If you want to add the image through code kindly use it like this
func shapeImage()
{
let customImgView = customImageView()
customImgView.image = UIImage(named: "Image")
customImgView.frame = CGRectMake(0, 0, 250, 250)
self.view.addSubview(customImgView)
}
这是左侧的实际图像和成型后的图像您在右侧模拟器中的要求
This is the actual image on left hand side and the image after shaping as per your requirement in the simulator on the right hand side
这篇关于如何在swift中制作不同形状的imageview的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!