ios - plus - como tomar screenshot en iphone xr
Cómo establecer la imagen para el botón de la barra con rapidez? (10)
Aquí hay una extension
simple en UIBarButtonItem
:
let barButton = UIBarButtonItem(image: UIImage(named: "menu"), landscapeImagePhone: nil, style: .Done, target: self, action: #selector(revealBackClicked))
self.navigationItem.leftBarButtonItem = barButton
Estoy tratando de establecer una imagen para el botón de la barra del artículo para el que tengo una imagen como:
con la resolución 30 * 30, pero mientras asigno este botón Imagen a la barra, se ve así:
He asignado la imagen de esta manera:
y si intento hacerlo de esta manera, como hacer una IBOutlet para el botón y establecer Imagen programáticamente, formulo this pregunta y código para eso:
// Outlet for bar button
@IBOutlet weak var fbButton: UIBarButtonItem!
// Set Image for bar button
var backImg: UIImage = UIImage(named: "fb.png")!
fbButton.setBackgroundImage(backImg, forState: .Normal, barMetrics: .Default)
pero nada sucedió con esto,
¿Alguien puede decirme qué estoy haciendo mal?
o cual es la forma de bateador para hacer esto?
Estoy usando el último swift (2.1) y la respuesta (Dharmesh Kheni y jungledev) no funciona para mí. El color de la imagen estaba desactivado (cuando se configuraba en IB, era azul y cuando se configuraba directamente en UIButton, era negro). Resulta que podría crear el mismo elemento de barra con el siguiente código:
To design a custom bar icon, follow these guidelines:
Use pure white with appropriate alpha transparency.
Don’t include a drop shadow.
Use antialiasing.
Lo he logrado programáticamente con este código:
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
//create a new button
let button: UIButton = UIButton.buttonWithType(UIButtonType.Custom) as! UIButton
//set image for button
button.setImage(UIImage(named: "fb.png"), forState: UIControlState.Normal)
//add function for button
button.addTarget(self, action: "fbButtonPressed", forControlEvents: UIControlEvents.TouchUpInside)
//set frame
button.frame = CGRectMake(0, 0, 53, 31)
let barButton = UIBarButtonItem(customView: button)
//assign button to navigationbar
self.navigationItem.rightBarButtonItem = barButton
}
//This method will call when you press button.
func fbButtonPressed() {
println("Share to fb")
}
}
Y el resultado será:
De la misma forma que puede configurar el botón para el lado izquierdo también de esta manera:
self.navigationItem.leftBarButtonItem = barButton
Y el resultado será:
Y si desea la misma transacción que tiene el controlador de navegación cuando vuelve con el botón de retroceso predeterminado, puede lograrlo con el botón Atrás personalizado con este código:
func backButtonPressed(sender:UIButton) {
navigationController?.popViewControllerAnimated(true)
}
Para swift 3.0:
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
//create a new button
let button = UIButton.init(type: .custom)
//set image for button
button.setImage(UIImage(named: "fb.png"), for: UIControlState.normal)
//add function for button
button.addTarget(self, action: #selector(ViewController.fbButtonPressed), for: UIControlEvents.touchUpInside)
//set frame
button.frame = CGRect(x: 0, y: 0, width: 53, height: 51)
let barButton = UIBarButtonItem(customView: button)
//assign button to navigationbar
self.navigationItem.rightBarButtonItem = barButton
}
//This method will call when you press button.
func fbButtonPressed() {
print("Share to fb")
}
}
Para swift 4.0:
barButtonItem.image = UIImage(named: "image")
Si su UIBarButtonItem ya está asignado como en un guión gráfico. (printBtn)
@IBOutlet weak var settingBarBtn: UIBarButtonItem! {
didSet {
let imageSetting = UIImageView(image: UIImage(named: "settings"))
imageSetting.image = imageSetting.image!.withRenderingMode(.alwaysOriginal)
imageSetting.tintColor = UIColor.clear
settingBarBtn.image = imageSetting.image
}
}
Similar a la solución aceptada, pero puede reemplazar el
let button = UIButton()
con
let button = UIButton()
button.frame = CGRectMake(0, 0, 51, 31) //won''t work if you don''t set frame
button.setImage(UIImage(named: "fb"), forState: .Normal)
button.addTarget(self, action: Selector("fbButtonPressed"), forControlEvents: .TouchUpInside)
let barButton = UIBarButtonItem()
barButton.customView = button
self.navigationItem.rightBarButtonItem = barButton
Aquí está la solución completa, disfruta: (es un poco más limpia que la solución aceptada)
extension UIBarButtonItem {
class func itemWith(colorfulImage: UIImage?, target: AnyObject, action: Selector) -> UIBarButtonItem {
let button = UIButton(type: .custom)
button.setImage(colorfulImage, for: .normal)
button.frame = CGRect(x: 0.0, y: 0.0, width: 44.0, height: 44.0)
button.addTarget(target, action: action, for: .touchUpInside)
let barButtonItem = UIBarButtonItem(customView: button)
return barButtonItem
}
}
Solo se requieren dos líneas de código para esto
Swift 3.0
self.navigationItem.leftBarButtonItem = nil
let button = UIButton(type: .custom)
button.setImage(UIImage (named: "ChatTab"), for: .normal)
button.frame = CGRect(x: 0.0, y: 0.0, width: 35.0, height: 35.0)
//button.addTarget(target, action: nil, for: .touchUpInside)
let barButtonItem = UIBarButtonItem(customView: button)
let button2 = UIButton(type: .custom)
button2.setImage(UIImage (named: "ActivityTab"), for: .normal)
button2.frame = CGRect(x: 0.0, y: 0.0, width: 35.0, height: 35.0)
//button.addTarget(target, action: nil, for: .touchUpInside)
let barButtonItem2 = UIBarButtonItem(customView: button2)
self.navigationItem.rightBarButtonItems = [barButtonItem, barButtonItem2]
Su problema se debe a la forma en que se ha hecho el icono; no se ajusta a las especificaciones del icono de la barra de pestañas personalizadas de Apple:
let closeButtonImage = UIImage(named: "ic_close_white")
navigationItem.rightBarButtonItem = UIBarButtonItem(image: closeButtonImage, style: .plain, target: self, action: #selector(ResetPasswordViewController.barButtonDidTap(_:)))
func barButtonDidTap(_ sender: UIBarButtonItem)
{
}
De las pautas:
Algo que sería posible se ve así. Puede encontrar esos íconos en la mayoría de los sitios de íconos gratuitos de la barra de pestañas.
Swift 4.
@IBOutlet weak var settingBarBtn: UIBarButtonItem! { didSet { let imageSetting = UIImageView(image: UIImage(named: "settings")) imageSetting.image = imageSetting.image!.withRenderingMode(.alwaysOriginal) imageSetting.tintColor = UIColor.clear settingBarBtn.image = imageSetting.image } }
Una solución fácil puede ser la siguiente
let button: UIButton = UIButton.buttonWithType(UIButtonType.Custom) as! UIButton
luego vaya a sus Fondos de activos. Seleccione la imagen y vaya al Inspector de atributos y seleccione "Imagen original" en Reder como opción.
Puede usar este código para el botón de barra múltiple con imagen personalizada:
let btn = UIButton(frame: CGRect(x: 0, y: 0, width: 30, height: 30))
btn.setImage(UIImage(named: Constants.ImageName.print)?.withRenderingMode(.alwaysTemplate), for: .normal)
btn.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(handlePrintPress(tapGesture:))))
printBtn.customView = btn
El resultado será este: