如何在swift中制作不同形状的imageview [英] How to make imageview with different shape in swift

查看:125
本文介绍了如何在swift中制作不同形状的imageview的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想将正常的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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆