- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我花了将近几个小时才弄明白。然而,它并没有发生,最后,我不得不来到这里。 需要完成两件事:
首先,我想在 UITabbar 的顶部(基本上是右上角和左上角)有一个自发的圆角半径。
其次,我希望在这些角半径上方有一个阴影(如下图所示)。
如果我这边有任何进一步的要求,请告诉我,我一定会提供。
任何帮助将不胜感激。
编辑 1
这里又出现了一个小问题,假设,即使,但是,我们能够做到这一点,Apple 审核团队会接受该申请吗?我对此有点紧张和好奇。
最佳答案
问:这里又出现了一个小问题,假设,即使,但是,我们能够做到这一点,Apple 审核团队会接受该申请吗?A:是的,他们接受了你的应用程序,我添加了这种 TabBar。
创建自定义标签栏
主页选项卡 Controller
import UIKit
class HomeTabController: UITabBarController
{
var viewCustomeTab : CustomeTabView!
var lastSender : UIButton!
//MARK:- ViewController Methods
override func viewDidLoad()
{
super.viewDidLoad()
UITabBar.appearance().shadowImage = UIImage()
allocateTabItems()
}
//MARK:- Prepare Methods
// Allocate shop controller with tab bar
func allocateTabItems()
{
let vc1 = UIStoryboard.init(name: "Main", bundle: Bundle.main).instantiateViewController(withIdentifier: "Avc") as? Avc
let item1 = UINavigationController(rootViewController: vc1!)
self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
self.navigationController?.navigationBar.shadowImage = UIImage()
self.viewControllers = [item1]
createTabBar()
}
func createTabBar()
{
viewCustomeTab = CustomeTabView.instanceFromNib()
viewCustomeTab.translatesAutoresizingMaskIntoConstraints = false
viewCustomeTab.call()
self.view.addSubview(viewCustomeTab)
if #available(iOS 11, *)
{
let guide = view.safeAreaLayoutGuide
NSLayoutConstraint.activate([guide.bottomAnchor.constraint(equalToSystemSpacingBelow: viewCustomeTab.bottomAnchor, multiplier: 0), viewCustomeTab.leadingAnchor.constraint(equalToSystemSpacingAfter: guide.leadingAnchor, multiplier: 0), guide.trailingAnchor.constraint(equalToSystemSpacingAfter: viewCustomeTab.trailingAnchor, multiplier: 0), viewCustomeTab.heightAnchor.constraint(equalToConstant: 70) ])
}
else
{
let standardSpacing: CGFloat = 0
NSLayoutConstraint.activate([viewCustomeTab.topAnchor.constraint(equalTo: topLayoutGuide.bottomAnchor, constant: standardSpacing), bottomLayoutGuide.topAnchor.constraint(equalTo: viewCustomeTab.bottomAnchor, constant: standardSpacing)
])
}
viewCustomeTab.btnTab1.addTarget(self, action: #selector(HomeTabController.buttonTabClickAction(sender:)), for: .touchUpInside)
viewCustomeTab.btnTab2.addTarget(self, action: #selector(HomeTabController.buttonTabClickAction(sender:)), for: .touchUpInside)
viewCustomeTab.btnTab3.addTarget(self, action: #selector(HomeTabController.buttonTabClickAction(sender:)), for: .touchUpInside)
viewCustomeTab.btnTab4.addTarget(self, action: #selector(HomeTabController.buttonTabClickAction(sender:)), for: .touchUpInside)
viewCustomeTab.btnTab5.addTarget(self, action: #selector(HomeTabController.buttonTabClickAction(sender:)), for: .touchUpInside)
//self.view.layoutIfNeeded()
viewCustomeTab.layoutIfNeeded()
viewCustomeTab.btnTab1.alignContentVerticallyByCenter(offset: 3)
viewCustomeTab.btnTab2.alignContentVerticallyByCenter(offset: 3)
viewCustomeTab.btnTab3.alignContentVerticallyByCenter(offset: 3)
viewCustomeTab.btnTab4.alignContentVerticallyByCenter(offset: 3)
viewCustomeTab.btnTab5.alignContentVerticallyByCenter(offset: 3)
viewCustomeTab.btnTab1.isSelected = true
}
//MARK:- Button Click Actions
//Manage Tab From Here
func setSelect(sender:UIButton)
{
viewCustomeTab.btnTab1.isSelected = false
viewCustomeTab.btnTab2.isSelected = false
viewCustomeTab.btnTab3.isSelected = false
viewCustomeTab.btnTab4.isSelected = false
viewCustomeTab.btnTab5.isSelected = false
sender.isSelected = true
}
@objc func buttonTabClickAction(sender:UIButton)
{
//self.selectedIndex = sender.tag
if sender.tag == 0
{
let vc1 = UIStoryboard.init(name: "Main", bundle: Bundle.main).instantiateViewController(withIdentifier: "Bvc") as? Bvc
let item1 = UINavigationController(rootViewController: vc1!)
item1.navigationBar.isHidden = false
self.viewControllers = [item1]
setSelect(sender: viewCustomeTab.btnTab1)
return
}
if sender.tag == 1
{
let vc2 = UIStoryboard.init(name: "Main", bundle: Bundle.main).instantiateViewController(withIdentifier: "Cvc") as? Cvc
let item2 = UINavigationController(rootViewController: vc2!)
item2.navigationBar.isHidden = false
item2.navigationBar.isTranslucent = false
self.viewControllers = [item2]
setSelect(sender: viewCustomeTab.btnTab2)
return
}
if sender.tag == 2
{
let vc3 = UIStoryboard.init(name: "Main", bundle: Bundle.main).instantiateViewController(withIdentifier: "Dvc") as? Dvc
let item3 = UINavigationController(rootViewController: vc3!)
item3.navigationBar.isHidden = false
item3.navigationBar.isTranslucent = false
self.viewControllers = [item3]
setSelect(sender: viewCustomeTab.btnTab3)
return
}
if sender.tag == 3
{
}
if sender.tag == 4
{
}
}
}
Create Custom View For Shadow Effect and For + Button.
import UIKit
class CustomeTabView: UIView
{
@IBOutlet weak var btnTab5: UIButton!
@IBOutlet weak var btnTab4: UIButton!
@IBOutlet weak var btnTab3: UIButton!
@IBOutlet weak var btnTab2: UIButton!
@IBOutlet weak var btnTab1: UIButton!
@IBOutlet weak var vRadius: UIView!
class func instanceFromNib() -> CustomeTabView
{
return UINib(nibName: "CustomeTabView", bundle: nil).instantiate(withOwner: nil, options: nil)[0] as! CustomeTabView
}
private var shadowLayer: CAShapeLayer!
override func layoutSubviews()
{
super.layoutSubviews()
let shadowSize : CGFloat = 2.0
let shadowPath = UIBezierPath(roundedRect: CGRect(x: -shadowSize / 2, y: -shadowSize / 2, width: self.vRadius.frame.size.width, height: self.vRadius.frame.size.height), cornerRadius : 20)
self.vRadius.layer.masksToBounds = false
self.vRadius.layer.shadowColor = UIColor.black.cgColor
self.vRadius.layer.shadowOffset = CGSize.zero//(width: self.vRadius.frame.size.width, height: self.vRadius.frame.size.height)
self.vRadius.layer.shadowOpacity = 0.5
self.vRadius.layer.shadowPath = shadowPath.cgPath
self.vRadius.layer.cornerRadius = 20
}
关于swift - 如何在 UITabbar 中使用所需的投影设置左上角和右上角半径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55042538/
我正在尝试使用 Google map 的 iframe 在我的网站上列出来自 Google map 的所有仓库位置: 目前,我一直在研究如何删除位置框(左上角),因为我将其用作 iframe。有没有
我正在设计数据表的样式,但我不知道如何设计数据网格左上角的样式。就是这张图中的灰色区域: 你知道怎么做吗? 到目前为止,这是我的风格:
我正在尝试在导航栏的左上角添加一些文本。单击后,我希望页面自动滚动回页面顶部 HTML: LOGO HERE Services
默认情况下,SVG 中文本元素的 anchor 在左下角,但我希望它在左上角,因为我还创建了一个矩形作为文本的背景,但它显示不正确,因为文本高于矩形(因为矩形 anchor /偏移位于左上角)。有没有
我需要的是将 DIV 的内容溢出(如果这是正确的词,我不会溢出)到左侧和顶部,并保持 DIV 大小始终固定。这是我制作的图像: 正常结果是 DIV 变为 70x76(其内容的大小),但我需要保持 DI
我们如何在纯 CSS 中创建这个形状? 最佳答案 你可以像下面这样: html and the css div { height: 300px; background:
无法诊断 div 左上角 float 像素的原因。它只在我添加了一个 border-radius 后出现。 仔细观察每个 Angular ,您会看到一些碎片,因为它在应用半径之前应用了直线。也许需要一
有很多问题需要从左上角(例如:编辑距离)和从右下角开始(例如:回文子串)填表。有什么时候使用哪个的直观解释吗?引用资料: http://www.geeksforgeeks.org/dynamic-pr
我正在开发一个 FabricJS 应用程序,我希望用户通过简单的单击即可将对象移动到 Canvas 原点,即使在旋转或缩放对象或一组对象之后也是如此。为此,当用户单击时,我会执行以下代码: obj.l
我在定位元素时遇到错误。浏览器通过查看元素的左上角来计算元素的位置。 让我们说那个点(左上角)“基础”(抱歉这个术语)当我使用对齐或中心对象时,它工作正常。但是,如果我用其他属性更改元素的位置,比如说
是否可以禁用/删除对话框左上角的QDialogs默认关闭按钮? 最佳答案 至少在(嵌入式)Linux 中,您可以这样做: setWindowFlags(Qt::Window | Qt::WindowT
我如何让应用程序的名称出现在此处(就像普通应用程序一样)... alt text http://snapplr.com/snap/6sgc ...当应用程序是 LSUIElement 时。 我的问题是
我有一个 div,我想在 div 的右下角放一张图片,在左下角放一些图片。它们的高度不同,所以我想确保它们都与 div 的底部对齐。 首先,我使用以下方法使右下角对齐: position: ab
如何在使用 border-width 时添加边框半径?我想添加 border-top-left-radius 为 15px。 我有这段代码可以创建一个三 Angular 形对象,它看起来不错,但我希望
我是一名优秀的程序员,十分优秀!