Riferendosi al commento sopra.
Il mio codice:
button.backgroundColor = UIColor.withAlphaComponent(UIColor.white)(0.1)
button.layer.cornerRadius = button.frame.size.height/2
button.layer.borderWidth = 3
button.layer.borderColor = UIColor.white.cgColor
button.layer.contents = UIImage(named: "buttonImage.png")?.cgImage
button.layer.contentsGravity = kCAGravityCenter
button.layer.magnificationFilter = kCAFilterLinear
button.layer.isGeometryFlipped = false
Applicando la soluzione:
let maskLayer = CALayer()
E infine:
layer.backgroundColor = UIColor.redColor().CGColor
Il risultato è orribile.
La soluzione è sul seguente link (link nel commento)
Ma mi mostrano il mio codice (prendere da link):
let image_ = UIImage(named: "image.png")
let maskImage = image_?.cgImage
let width = image_?.size.width
let height = image_?.size.height
let bounds = CGRect(x: 0, y: 0, width: width!, height: height!)
let colorSpace = CGColorSpaceCreateDeviceRGB()
let bitmapInfo = CGBitmapInfo(rawValue: CGImageAlphaInfo.premultipliedLast.rawValue)
let bitmapContext = CGContext(data: nil,
width: Int(width!),
height: Int(height!),
bitsPerComponent: 8,
bytesPerRow: 0,
space: colorSpace,
bitmapInfo: bitmapInfo.rawValue)
bitmapContext?.clip(to: bounds, mask: maskImage!)
bitmapContext?.setFillColor(UIColor.yellow.cgColor)
bitmapContext?.fill(bounds)
let cImage = bitmapContext?.makeImage()
let coloredImage = UIImage(cgImage: cImage!)
self.myUIButton.layer.contents = coloredImage.cgImage
Ti prego, lascia che ti dica una cosa (è importante) non giocare con:
Il nome dell'immagine "someImage.png" deve essere esattamente il nome del file nella cartella del progetto.
molto più semplice e più pulito della risposta accettata. Potresti voler renderlo più completo aggiungendo let layer = CALayer() e impostando layer.frame. –
Non funziona per me. Quindi scrivi il mio codice: – Markus