Как нарисовать круг в круге с помощью кода

Хочу нарисовать круг в круге. Получается внешний белый и внутри него синий, размеры всё четко указал, расположение что на чём лежит тоже, но вот синий круг почему-то не округляется и отображается неправильно.

        let backgroundCircle = UIView(frame: CGRect(origin: .init(x: 140, y: 450), size: CGSize(width: 22, height: 22)))
        backgroundCircle.backgroundColor = .white
        backgroundCircle.layer.cornerRadius = backgroundCircle.frame.height / 2
        backgroundCircle.layer.borderWidth = 2.5
        backgroundCircle.layer.borderColor = UIColor.white.cgColor
        backgroundCircle.clipsToBounds = true
        mImageView.addSubview(backgroundCircle)

        let circle = UIView(frame: CGRect(origin: .zero, size: CGSize(width: 17, height: 17)))
        circle.backgroundColor = UIColor(red: 75/255, green: 173/255, blue: 212/255, alpha: 1.0)
        circle.layer.cornerRadius = backgroundCircle.frame.height / 2
        backgroundCircle.addSubview(circle)
      }

введите сюда описание изображения


Ответы (1 шт):

Автор решения: Dmitry Serov

Похоже, что у вас неверно задан origin у синего круга. origin – это верхний левый угол, сейчас он совпадает с origin белого круга, а размеры у них разные. Можно исправить, передвинув центр синего круга в центр белого:

circle.center = CGPoint(x: backgroundCircle.bounds.width / 2, y: backgroundCircle.bounds.height / 2)

Ещё, если так написать, то становится видно, что cornerRadius белого круга слишком велик для синего – края будут обрезаны. Исправить можно, отдельно вычислив cornerRadius для синего круга:

circle.layer.cornerRadius = circle.bounds.height / 2
→ Ссылка