Выражение PaintCode для динамической ширины штриха на основе кадра

У меня есть безье с обводкой, которая содержится в рамке. Мой Безье очень хорошо изменяет размер динамически вместе с рамкой, но ширина штриха статична, из-за чего он выглядит плохо при небольших размерах. (Обратите внимание, что обводка маленькой звезды ниже не пропорциональна.)

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

Моя первая мысль состояла в том, чтобы сделать ширину обводки (обычно 5) выражением, основанным на чем-то вроде 5.0*(frame.width/standardwidth), но мне не разрешено ссылаться на переменную кадра.

Как я могу сделать выражение для расчета ширины штриха на основе ширины кадра? Или каким-то образом сделать ширину штриха динамически изменяемой, как и остальные элементы в кадре?


person Kenny Wyland    schedule 03.09.2018    source источник


Ответы (1)


Для меня это работает из коробки. То есть:

"...каким-то образом сделать ширину обводки динамической, как и у остальных элементов в кадре"

Версии:

  • Код краски 3.4 (34000)
  • Xcode 9.4.1 (9F2000)
  • Свифт 4.1.2

Настройка кода краски

Настройка PaintCode

Пользовательский вид

import Foundation
import UIKit

@IBDesignable class StarView: UIView {

    override func draw(_ rect: CGRect) {
        StyleKit.drawStarIcon(frame: rect)
    }
}

Конечный результат

Окончательный результат

Гитхаб

https://github.com/backslash-f/paintcode-tests

person backslash-f    schedule 03.09.2018
comment
Не похоже, что у тебя есть звезда в рамке. Когда я помещаю рамку вокруг звезды, я не получаю ту опцию изменения размера, которая у вас есть (она неактивна). - person Kenny Wyland; 04.09.2018
comment
... и штрих на моей звезде остается в статическом размере, что означает, что он толще, чем должен быть пропорционально. - person Kenny Wyland; 04.09.2018
comment
О, это правда. Я больше не использую фреймы для простых операций по изменению размера. Я помню, что они были абсолютно необходимы в предыдущих версиях PaintCode, но теперь в большинстве случаев от них можно отказаться. Вам действительно нужна эта рамка? - person backslash-f; 04.09.2018
comment
Да, я только что вернулся, чтобы опубликовать то, что вы только что сделали. То, что я пытаюсь сделать, требует кадра в PaintCode 1 и 2, но эта новая функция автоматического изменения размера PaintCode 3, кажется, по своей сути делает то, что я хочу, без необходимости возиться с кадрами. Спасибо! - person Kenny Wyland; 04.09.2018