Swift自定义导航项

时间:2016-06-11 16:10:44

标签: swift uinavigationcontroller swift2 uinavigationitem

我想在我的代码中创建一个自定义左侧导航栏按钮。 我可以用标题或图像来做。 当我想要同时使用用户标题和图像时,该按钮看起来不合适。

我尝试添加两个按钮。一个是标题,另一个是图像,但这次按钮之间的空间太大了。

我想要左侧导航按钮: enter image description here

如何左图栏按钮项目如图像? (<聊天部分)

2 个答案:

答案 0 :(得分:2)

首先,创建一个包含标题和图像的uibutton,并将导航栏的leftbuttonitem设置为创建的解开按钮:

//create the uibutton
var button = UIButton.buttonWithType(UIButtonType.Custom) as? UIButton
//Set the image
button?.setImage(UIImage(named: "yourImageName.jpg"), forState: UIControlState.Normal)
//Set the title
button?.setTitle("Yourtitle", forState: UIControlState.Normal)
//Add target
button?.addTarget(self, action:"callMethod", forControlEvents: UIControlEvents.TouchDragInside)
button?.frame=CGRectMake(0, 0, 30, 30)
//Create bar button
var barButton = UIBarButtonItem(customView: button!)
self.navigationItem.leftBarButtonItem = barButton

然后,使用imageEdgeInsetstitleEdgeInsets调整uibutton中标题和图片的位置:

let spacing:CGFloat = 10.0; // the amount of spacing to appear between image and title
tabBtn.imageEdgeInsets = UIEdgeInsetsMake(0, 0, 0, spacing);
tabBtn.titleEdgeInsets = UIEdgeInsetsMake(0, spacing, 0, 0);

在这里调整插图有点技术性,我只是提供一个可以直接使用的答案。有关详细信息,请查看此帖Aligning text and image on UIButton with imageEdgeInsets and titleEdgeInsets

答案 1 :(得分:1)

问题是你没有正确设置按钮的imageEdgeInset和titleEdgeInset,这就是为什么你在标题和图像之间获得更多空间尝试设置按钮的imageEdgeInset和titleEdgeInset:

leftBarBtn.imageEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 5)
leftBarBtn.titleEdgeInsets = UIEdgeInsetsMake(0, 5, 0, 0)