Как сохранить текст горизонтально при вращении преобразования содержащего представления - PullRequest
0 голосов
/ 18 января 2019

Создание пользовательского элемента управления пользовательского интерфейса, похожего на колесо вращения, выглядит следующим образом: enter image description here

Как вы можете видеть метки, расположенные "на радиусах", но мне нужно разместить все метки горизонтальнои оставьте их такими же, когда я поверну контейнер.

1 Ответ

0 голосов
/ 19 января 2019

Вы можете сделать что-то вроде этого:

    let font = UIFont.systemFont(ofSize: 12)
    let attributes = [
        NSAttributedString.Key.font: UIConstants.CaptionFont,
        NSAttributedString.Key.foregroundColor: UIColor.accent
    ]

    for path in pathsForIndicators {
        let cgPath = path.cgPath
        let layer = CATextLayer()
        layer.frame = CGRect(x: cgPath.boundingBox.midX + offset + 22,
                             y: cgPath.boundingBox.midX + 10, width: 40, height: 40)
        layer.position = CGPoint(x: cgPath.boundingBox.midX + offset + 22,
                                 y: cgPath.boundingBox.midY + 10)
        layer.font = font
        let value = 0 // TODO
        let title = String(describing: value)
        let attributedString = NSAttributedString(string: title, attributes: attributes)
        layer.string = attributedString
        layer.isWrapped = false
        layer.alignmentMode = CATextLayerAlignmentMode.center
        layer.foregroundColor = indicatorColor.cgColor
        layer.shouldRasterize = true
        layer.needsDisplayOnBoundsChange = false
        layer.needsDisplay()
        layer.displayIfNeeded()
        textLayer.addSublayer(layer)
    }
    textLayer.backgroundColor = UIColor.clear.cgColor
    textLayer.bounds = bounds
    textLayer.position = centerPoint
    layer.addSublayer(textLayer)
...