需要在 swift 4 中设计自定义标签栏。 - 更新

Posted

技术标签:

【中文标题】需要在 swift 4 中设计自定义标签栏。 - 更新【英文标题】:Need to design custom tabbar in swift 4 . - Update 【发布时间】:2019-05-29 11:39:30 【问题描述】:

我为 UITabBar 创建了自定义类,用于设计凸起的按钮和标签栏。实际上我需要在凸起的按钮后面给出波浪背景效果。 © 已经创建了圆形和凸起的按钮,但设置不准确不是波浪流效果。附上图片和代码。

更新:

我附上了我的下载代码和实际图像(我需要包含在资产中的标签栏设计)。 参考链接:https://drive.google.com/file/d/1evDPYdG2fGiMohWohJR2BQJNsKJHStQy/view?usp=sharing

func createPathCircle() -> CGPath 
    
            let radius: CGFloat = 40.0
            let path = UIBezierPath()
            let centerWidth = self.frame.width / 2
    
            path.move(to: CGPoint(x: 0, y: 0))
            path.addLine(to: CGPoint(x: (centerWidth - radius * 2), y: 0))
            path.addArc(withCenter: CGPoint(x: centerWidth, y: 0), radius: radius, startAngle: CGFloat(180).degreesToRadians, endAngle: CGFloat(0).degreesToRadians, clockwise: true)
            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
        

我需要实现的实际目标

need this

【问题讨论】:

@aunnnn 你能指导我吗? 我已经下载了你的项目,所以你想让按钮在正确的位置吗? @JohnHoang 是的,但实际上有两个问题,一个是所有设备的按钮放置问题,第二个是背景(即标签栏圈)需要像波浪形式一样设置。 @JohnHoang 第一部分我已经完成了,只剩下第二期了。 【参考方案1】:

嗯,你刚刚在 ViewController.swift, button.frame 上固定了它的位置

像这样简单地减小 y 轴

button.frame = CGRect.init(x: self.tabBar.center.x - 32, y: self.view.bounds.height - 80, width: 64, height: 64)

【讨论】:

谢谢您,但问题仍然存在,您提到的设置在 İPhone 8 上有效,但是当我们更改设备(İPhone XR、XS 或 İPhone 8 plus)时,按钮设置受到干扰。如何为所有视图设置 ıt? 最后我使用 switch 语句完成了按钮位置 - UIScreen.nativebound if UIDevice().userInterfaceIdiom == .phone switch UIScreen.main.nativeBounds.height case 1920, 2208: print("iPhone 6+/6S+/7+/8+") case 1792: print("iPhone XR") button.frame = CGRect.init(x: self.tabBar.center.x - 32, y: self.view.bounds.height - 114, width: 64, height: 64)

以上是关于需要在 swift 4 中设计自定义标签栏。 - 更新的主要内容,如果未能解决你的问题,请参考以下文章

Swift 和 Xcode - 如何创建自定义标签栏图标

如何在 Swift 的标签栏项目中设置图像?

在 Swift 中设置活动标签栏项目的背景颜色

我需要在 appdelegate swift 中添加一个自定义标签栏控制器

Swift 4 - 标签栏项目上的按钮

如何在目标c中设置标签栏项badgeValue?