IOS 使用自定义View实现圆形布局(Swift)

前面写过用安卓实现,IOS 使用自定义View实现圆形布局(Swift)_第1张图片还是同个需求,只不过现在需要做苹果版本。

网上搜到了类似的案列点击打开链接只不过他的是用UICollectionView。跟我的需求有点不符合。没有搜到完全符合的案例。没办法自己写个,记录一下,也给有同种需求的童鞋填个坑。

一、创建自定义view

创建CircleView继承自UIView,重写draw方法。swift必须重写

required init?(coder aDecoder: NSCoder) {

        super.init(coder: aDecoder)

    }

二、声明必须的变量

 //1 声明变量

    var myView:UIView?

 let frame = self.bounds

        // 圆心

        let center = CGPoint(x: Double(frame.width * 0.5), y: Double(frame.height * 0.5))

        // 圆半径

        let radius: CGFloat = frame.height/2.2

        let cout = self.subviews.count

三、初始化视图

 //2 初始化视图

        for i in 0..<self.subviews.count {

            myView = self.subviews[i]

            

            let angle = 2 * CGFloat(M_PI) * CGFloat(i) / CGFloat(cout)

            myView?.center =  CGPoint(x: center.x + radius*cos(angle), y: center.y + radius*sin(angle))

            

        }

  

        self.addSubview(myView!)

四、加上@IBDesignable

最后在类上面加上

@IBDesignable 在sb里面实时预览

IOS 使用自定义View实现圆形布局(Swift)_第2张图片基本符合。

最后再贴出详细代码供各位参考:

//
//  CircleView.swift
//  SamrtToilet
//
//  Created by 唐 on 2018/3/7.
//  Copyright © 2018年 唐. All rights reserved.
//

import UIKit

@IBDesignable
class CircleView: UIView {
    
    //1 声明变量
    var myView:UIView?
    
    // Only override draw() if you perform custom drawing.
    // An empty implementation adversely affects performance during animation.
    override func draw(_ rect: CGRect) {
         let frame = self.bounds
        // 圆心
        let center = CGPoint(x: Double(frame.width * 0.5), y: Double(frame.height * 0.5))
        // 圆半径
        let radius: CGFloat = frame.height/2.2
        let cout = self.subviews.count
        //2 初始化视图
        for i in 0..

你可能感兴趣的:(IOS)