Как создать пользовательский изогнутый ios uitabbar?IOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Как создать пользовательский изогнутый ios uitabbar?

Сообщение Anonymous »

Итак, это навигация, которую мой дизайнер сделал для нашего проекта. Высота таббара составляет 70.

То, что я пробовал до сих пор.
Моя попытка была основана на урок от Филиппа Вайса. />https://betterprogramming.pub/draw-a-cu ... faобразное значение Это основано на идее создания пользовательского ibdesignable class uitabbar и переоценка метода рисования.

Код: Выделить всё

@IBDesignable
class CustomizedTabBar: UITabBar {

private var shapeLayer: CALayer?

override func draw(_ rect: CGRect) {
self.addShape()
}

private func addShape() {
let shapeLayer = CAShapeLayer()
shapeLayer.path = createPath()
shapeLayer.strokeColor = UIColor.blueMenu2.cgColor
shapeLayer.fillColor = UIColor.blueMenu2.cgColor
shapeLayer.lineWidth = 1.0

if let oldShapeLayer = self.shapeLayer {
self.layer.replaceSublayer(oldShapeLayer, with: shapeLayer)
} else {
self.layer.insertSublayer(shapeLayer, at: 0)
}

self.shapeLayer = shapeLayer
}

func createPath() -> CGPath {

let height: CGFloat = 37.0
let path = UIBezierPath()
let centerWidth = self.frame.width / 2

path.move(to: CGPoint(x: 0, y: 0)) // start top left
path.addLine(to: CGPoint(x: (centerWidth - height * 2), y: 0)) // the beginning of the trough

// first curve down
path.addCurve(to: CGPoint(x: centerWidth, y: height),
controlPoint1: CGPoint(x: (centerWidth - 30), y: 0), controlPoint2: CGPoint(x: centerWidth - 35, y: height))
// second curve up
path.addCurve(to: CGPoint(x: (centerWidth + height * 2), y: 0),
controlPoint1: CGPoint(x: centerWidth + 35, y: height), controlPoint2: CGPoint(x: (centerWidth + 30), y: 0))

// complete the rect
path.addLine(to: CGPoint(x: self.frame.width, y: 0))
path.addLine(to: CGPoint(x: self.frame.width, y: self.frame.height))
path.addLine(to: CGPoint(x: 0, y: self.frame.height))
path.close()

return path.cgPath
}
< /code>
Я пытался отредактировать Bezier Path, чтобы достичь моей цели, но без успеха.
Я не уверен, может ли этот подход работать для этого конкретного дизайна вкладок. < /p>
Установка высоты навигации на 70 был без проблем.@IBInspectable var height: CGFloat = 70

override open func sizeThatFits(_ size: CGSize) -> CGSize {
guard let window = UIApplication.shared.keyWindow else {
return super.sizeThatFits(size)
}
var sizeThatFits = super.sizeThatFits(size)
if #available(iOS 11.0, *) {
sizeThatFits.height = height + window.safeAreaInsets.bottom
} else {
sizeThatFits.height = height
}
return sizeThatFits
}
Как я могу создать эту изогнутую вкладка?>

Подробнее здесь: https://stackoverflow.com/questions/718 ... s-uitabbar
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Неправильное появление Uitabbar в iOS 26
    Anonymous » » в форуме IOS
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Как создать изогнутый блок с помощью CSS [закрыто]
    Anonymous » » в форуме CSS
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous
  • Как создать изогнутый переработку
    Anonymous » » в форуме Android
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Как создать изогнутый переработку
    Anonymous » » в форуме Android
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Как создать наклонной изогнутый контейнер для изображения, который остается ровным?
    Anonymous » » в форуме CSS
    0 Ответы
    48 Просмотры
    Последнее сообщение Anonymous

Вернуться в «IOS»