patbef-iOS/Befund/Controls/Buttons/CircleButton.swift

70 lines
1.9 KiB
Swift
Raw Permalink Normal View History

2024-01-29 16:20:42 +01:00
//
// AddButton.swift
// Befund
//
// Created by Irakli Abetschkhrischwili on 19.05.22.
// Copyright © 2022 MVZ Dr. Stein und Kollegen. All rights reserved.
import Foundation
import UIKit
@IBDesignable class AddButton: UIButton
{
override init(frame: CGRect)
{
super.init(frame: frame)
initialize()
}
required init(coder aDecoder: NSCoder)
{
super.init(coder: aDecoder)!
}
override func layoutSubviews()
{
super.layoutSubviews()
initialize()
}
func initialize()
{
let screenBound = UIScreen.main.bounds;
var width = CGFloat((screenBound.width * 30) / 180.0)
if(width > 60.0)
{
width = CGFloat(60.0)
}
frame.size.width = width
frame.size.height = width
layer.cornerRadius = width / 2
frame.origin.y = (screenBound.height - 60) - (frame.height / 2.0)
frame.origin.x = (screenBound.width / 2.0) - (frame.width / 2.0)
layer.cornerRadius = bounds.size.height / 2.0
clipsToBounds = true
let gradient = CAGradientLayer()
gradient.frame = bounds
gradient.colors = [UIColor.white.cgColor, UIColor(red: 226/255.0, green: 0.0, blue: 122.0/255.0, alpha: 1.0).cgColor]
gradient.startPoint = CGPoint(x: 1.0, y: 0.5)
gradient.endPoint = CGPoint(x: 1.0, y: 0.5)
let shape = CAShapeLayer()
shape.lineWidth = 5
shape.path = UIBezierPath(
arcCenter: CGPoint(x: bounds.height/2,
y: bounds.height/2),
radius: bounds.height/2,
startAngle: CGFloat(0),
endAngle:CGFloat(CGFloat.pi * 2),
clockwise: true).cgPath
shape.strokeColor = UIColor.black.cgColor
shape.fillColor = UIColor.clear.cgColor
gradient.mask = shape
layer.addSublayer(gradient)
}
}