Мне очень нравится форма кнопки со стрелкой назад в iOS 7, и я хотел бы использовать ее на одном из моих UIButtons, но вроде > вместо <. Был бы способ с текстом, или я должен просто использовать изображения?
Символ обратной связи iOS 7?
Ответ 1
Официальное изображение символа кнопки Apple Apple можно скачать по адресу https://developer.apple.com/ios/human-interface-guidelines/resources/
Ответ 2
Вы должны использовать изображение. Эти активы в оригинальном размере от Apple. Вот, пожалуйста, просто щелкните правой кнопкой мыши и сохраните каждый из них.
1x:
Ответ 3
Вы можете извлечь все изображения iOS7 с помощью Cédric Luthi iOS-Artwork-Extractor, доступного на GitHub: скомпилируйте это приложение в симуляторе и найдите UINavigationBarBackDefault.png.
Изображение .
Альтернативой является получение файла Teehan + Lax iOS7 GUI PSD (iPhone). Он содержит большую часть работ iOS7. Там также есть Sketch App: Teehan + Lax iOS7 GUI для эскиза.
Ответ 4
Мое решение - использовать символ Юникода в качестве значка кнопки "Назад":
<
ОДИННАДЦАТЫЙ ЦИКЛ Unicode: U + 2039, UTF-8: E2 80 B9
HTML-объект: ‹
Минус:
- Не похож на реальный значок кнопки назад, но достаточно близко для меня.
Преимущества:
- Простая и быстрая реализация
- Нет файла изображения.
- Таким образом, цвет значка кнопки "Назад" не является фиксированным, но может корректироваться с помощью изменений цветового дизайна/новых версий iOS
Инструкция:
- Показать OS X Character Viewer (рядом с часами, возможно, вам нужно активировать его в настройках → Клавиатура)
- В левом списке нажмите "Круглые скобки"
- В Xcode поместите свой текстовый курсор внутри строки, которую вы определяете как текст кнопки возврата
- В средстве просмотра символов нажмите на первую запись в третьей строке (мне нужно было щелкнуть несколько раз, пока она не была вставлена в Xcode)
Возможно, есть еще лучшие персонажи, которые выглядят как значок кнопки...
Ответ 5
Скопируйте и вставьте.
Сделайте вид 32 x 32.
Для позиции обычная позиция iOS - 24 от левой безопасной области.
@IBDesignable class BackArrow32Button: UIButton {
override func draw(_ rect: CGRect) {
//
// this is just carefully MATCHED to the Apple one (2019)
// make the box > 32x32 < and have it > 24 on the left from safe area <
//
let bezierPath = UIBezierPath()
bezierPath.move(to: CGPoint(x: 17, y: 6))
bezierPath.addLine(to: CGPoint(x: 7, y: 16))
bezierPath.addLine(to: CGPoint(x: 17, y: 26))
UIColor.black.setStroke()
bezierPath.lineWidth = 3
bezierPath.stroke()
}
}
Деталь...
Я не добавил собственный размер контента, так как,
(A) это, вероятно, проще для новых программистов, подобных этому
(B) Вообще говоря, внутренний размер просто нарушается в конструкторе интерфейсов, поэтому для облегчения жизни вам лучше просто указать высоту и ширину с ограничением:/
Ответ 6
я хотел ответить на этот вопрос:
Создание кнопки со стрелкой влево (например, стиль UINavigationBar's "назад") на панели UIToolbar
(вдохновленный ответом мачуты там), но он заблокирован, и, будучи новым, у меня нет представителя... в любом случае, версия swiftui:
struct BackArrow: View
{
@Environment(\.horizontalSizeClass) var hsc: UserInterfaceSizeClass?
@Environment(\.verticalSizeClass) var vsc: UserInterfaceSizeClass?
var color: Color
var body: some View {
Path { path in
let height = self.arrowHeight(h: self.hsc, v: self.vsc)
let width = height * 0.6
path.move(to: CGPoint(x: width * 5.0 / 6.0, y: height * 0.0 / 10.0))
path.addLine(to: CGPoint(x: width * 0.0 / 6.0, y: height * 5.0 / 10.0))
path.addLine(to: CGPoint(x: width * 5.0 / 6.0, y: height * 10.0 / 10.0))
path.addQuadCurve( to: CGPoint( x: width * ((6.0 / 6.0) + self.fudgeFactor(h: self.hsc, v: self.vsc)),
y: height * ((9.0 / 10.0) - (self.fudgeFactor(h: self.hsc, v: self.vsc) * 1.666666))),
control: CGPoint( x: width * ((6.0 / 6.0) + self.fudgeFactor(h: self.hsc, v: self.vsc)),
y: height * 10.0 / 10.0))
path.addLine(to: CGPoint( x: width * ((2.0 / 6.0) + (3 * self.fudgeFactor(h: self.hsc, v: self.vsc))),
y: height * 5.0 / 10.0))
path.addLine(to: CGPoint( x: width * ((6.0 / 6.0) + self.fudgeFactor(h: self.hsc, v: self.vsc)),
y: height * ((1.0 / 10.0) + (self.fudgeFactor(h: self.hsc, v: self.vsc) * 1.666666))))
path.addQuadCurve( to: CGPoint( x: width * 5.0 / 6.0,
y: height * 0.0 / 10.0),
control: CGPoint( x: width * ((6.0 / 6.0) + self.fudgeFactor(h: self.hsc, v: self.vsc)),
y: height * 0.0 / 10.0))
}
.fill(color)
.offset(x: -8.0, y: -5.0) // there probaby some better way to figure this out, but i've wasted too much time already ...
}
private func fudgeFactor(h: UserInterfaceSizeClass?, v: UserInterfaceSizeClass?) -> CGFloat
{ return h == .compact ? ( v == .compact ? 0.01 // (c, c): normal phone, landscape
: 0.003 ) // (c, r): any phone, portrait
: ( v == .compact ? 0.01 // (r, c): large phone, landscape
: 0.003 ) // (r, r): ipad, full-screen, any
}
private func arrowHeight(h: UserInterfaceSizeClass?, v: UserInterfaceSizeClass?) -> CGFloat
{ return h == .compact ? ( v == .compact ? 18.0 // (c, c): normal phone, landscape
: 21.0 ) // (c, r): any phone, portrait
: ( v == .compact ? 18.0 // (r, c): large phone, landscape
: 21.0 ) // (r, r): ipad, full-screen, any
}
}
это грязный хак, но опять же, пытаясь сделать что-нибудь удаленное в swiftui, сейчас все равно кажется довольно хакерским...
Ответ 7
Это лучше всего было бы добиться за счет использования изображений. Невозможно сделать это с текстом, извините.
Я смог найти это изображение, это a .png