Swift:将UIView设置为UIBarButton / UIButton的背景

问题描述 投票:1回答:4

如何设置qazxsw poi作为qazxsw poi的背景? qazxsw poi应包含其标题和背景图片。

我尝试重写UIView类,但它不起作用。如果有人有解决方案,请告诉我。

ios swift uibutton uibarbuttonitem
4个回答
0
投票
UIBarButton

0
投票

您可以添加视图作为按钮的UIBarButton/UIButton

UIButton

0
投票

您可以使用继承自UIControl的CustomButton。通过使用xib,您可以根据您的要求管理UI。您可以在其中添加n个UI元素。您将获得默认事件处理程序,如UIButton(如touchupinside,touchupoutside,valuechange)。您可以提供相同的IBActions。供参考附加一些屏幕截图。如果您在执行此操作时遇到任何问题,请告诉我。继续编码。

// For UIBarButtonItem (just set customView parameter) let frame = CGRect(x: 0, y: 0, width: 100, height: 40) let customView = UIView(frame: frame) customView.backgroundColor = .red let barButtonItem = UIBarButtonItem(customView: customView) // for UIButton // 1. Subview case (add subview on your target UIButton, send to back so that it does not cover title) let button0 = UIButton(frame: frame) button0.addSubview(customView) button0.sendSubviewToBack(customView) button0.setTitle("Button", for: UIControl.State()) // 2. Rendered image case (as an alternative render your view to an image and add as a background image) // Extension for capturing a UIVIew as an image: extension UIImage { convenience init?(view: UIView) { UIGraphicsBeginImageContext(view.frame.size) guard let ctx = UIGraphicsGetCurrentContext() else { return nil } view.layer.render(in: ctx) let image = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() guard let cgImage = image?.cgImage else { return nil } self.init(cgImage: cgImage) } } let button1 = UIButton(frame: frame) let customViewImage = UIImage.init(view: customView) button1.setBackgroundImage(customViewImage, for: UIControl.State()) button1.setTitle("Button", for: UIControl.State())

subView

extension UIButton { func setBackgroundView(view: UIView) { view.frame = CGRect(x: 0, y: 0, width: self.frame.width, height: self.frame.height) view.isUserInteractionEnabled = false self.addSubview(view) } }


0
投票

也许您应该使用UIImageView.image而不是UIView本身来设置底部背景图像。

Add XIB
© www.soinside.com 2019 - 2024. All rights reserved.