如何在按钮上显示图像? -迅速

Posted

技术标签:

【中文标题】如何在按钮上显示图像? -迅速【英文标题】:How to Display Image over Button? -Swift 【发布时间】:2015-03-24 05:55:52 【问题描述】:

我正在以编程方式创建 UIButton 并将标题、图像设置为以下代码。问题是,每当我单击按钮时,图像都会突出显示,但按钮的标题却没有。所以,我想创建两者的动画效果或没有。以及我应该给出限制或什么让图像与文本“SORT”相匹配?

【问题讨论】:

如果你想要两者的动画并且有正确的展示位置,你可以选择使用 UIView 创建自定义组件,并在其中使用带有选择动画的触摸。要在按钮中放置图像,您可以查看此***.com/questions/13915898/… 使用属性检查器中 UIButton 的状态属性 @iphonic 感谢它提供了插图。但我的问题没有解决。我尝试将 UIbutton 类型更改为系统按钮。它解决了我的问题,但颜色已更改为系统类型的默认颜色蓝色 @anishparajuli 您可以随时更改文本颜色和字体,例如[button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; [[button titleLabel] setFont:[UIFont systemFontOfSize:13.0]]; yah..i 将标题颜色更改为 btnSort.setTitleColor(UIColor.whiteColor(), forState: UIControlState.Normal)。但不幸的是,在我按下输入系统按钮后,图像的颜色变成了蓝色,我无法将图像的颜色更改为白色 【参考方案1】:

我成功了。我将按钮类型更改为系统按钮,颜色更改为蓝色。但是,我设法通过将色调颜色设置为白色来将蓝色更改为白色,苹果默认使用该颜色将颜色设置为其控件(我猜)。所以系统按钮颜色为蓝色是由于 tintcolor 被指定为蓝色的原因

let btnSort   = UIButton.buttonWithType(UIButtonType.System) as UIButton
btnSort.frame =  CGRectMake(2, 74, 140, 26)
btnSort.tintColor = UIColor.whiteColor()
btnSort.setImage(UIImage(named:"drop_arrow"), forState: UIControlState.Normal)
btnSort.imageEdgeInsets = UIEdgeInsets(top: 6,left: 100,bottom: 6,right: 14)
btnSort.titleEdgeInsets = UIEdgeInsets(top: 0,left: -30,bottom: 0,right: 34)
btnSort.setTitle("SORT", forState: UIControlState.Normal)
btnSort.layer.borderWidth = 1.0
btnSort.layer.borderColor = UIColor.whiteColor().CGColor
btnSort.addTarget(self, action: Selector("showSortTbl"), forControlEvents: UIControlEvents.TouchUpInside)
self.view.addSubview(btnSort)

【讨论】:

我没有使用这种方法获得标题,图像出现但标题没有出现。你会调查它吗?【参考方案2】:

这里是示例代码,你可以试试。我以编程方式创建了一个按钮,并在EdgeInsets 属性的帮助下分配了图像。

       let btnDemo : UIButton  = UIButton() 
        btnDemo.frame = CGRect(x: 5, y: 75, width: 65, height: 18)
        btnDemo.setImage(UIImage(named:"drop_arrow_sample"), forState: UIControlState.Normal)
        btnDemo.imageEdgeInsets = UIEdgeInsets(top: 6,left: 100,bottom: 6,right: 14)
        btnDemo.titleEdgeInsets = UIEdgeInsets(top: 0,left: -30,bottom: 0,right: 34)
        btnDemo.titleLabel?.font = UIFont(name: "Helvetica Neue", size: 13)
        btnDemo.layer.cornerRadius = 2.0
        btnDemo.titleLabel?.textColor = UIColor.whiteColor()
        btnDemo.backgroundColor = UIColor(red: 189/255, green: 176/255, blue: 0/255, alpha: 1)                      
        btnDemo.tag = index
        btnDemo.addTarget(self, action: "SortTable:", forControlEvents: UIControlEvents.TouchUpInside)

【讨论】:

以上是关于如何在按钮上显示图像? -迅速的主要内容,如果未能解决你的问题,请参考以下文章

如何在按钮上添加图像(左)和文本

如何在 jQM 图像按钮上换行?

用户控制:如何在 setter/getter 中的按钮上添加背景图像

如何将图像放在 Matlab uicontrol 按钮上?

如何在带有背景图像的小部件上制作隐形按钮?

如何在按下按钮后单击屏幕上的图像