Maskieren Sie ein Bild in Swift mit CALayer und UIImage
Ich bin Programmierung in Swift. Ich möchte zum maskieren eines Bildes mit CALayer und UIImage. Ich bin momentan dabei, mein Bild mit der Maske programmgesteuert. Das erstellte Bild mit der Maske ist ein UIImage und funktioniert gut, wenn ich es auf seine eigene. Aber wenn ich es als eine Maske, die den ganzen Bildschirm weiß wird. Ich vermute, dass mein problem in der Konfiguration der CALayer-Objekt. Ich würde Ihre Hilfe schätzen. Danke!
class ViewController: UIViewController {
@IBOutlet weak var imageView: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
//Do any additional setup after loading the view, typically from a nib.
var maskImageSize = CGSizeMake(self.imageView.frame.width, self.imageView.frame.height)
UIGraphicsBeginImageContextWithOptions(maskImageSize, false, 0.0)
var color = UIColor(white: 1.0, alpha: 1.0)
color.setFill()
var rect = CGRectMake(0, 0, self.imageView.frame.width, self.imageView.frame.height)
UIRectFill(rect)
color = UIColor(white: 0.0, alpha: 1.0)
color.setFill()
rect = CGRectMake((self.imageView.frame.width/2)-100, (self.imageView.frame.height/2)-100, 200, 200)
UIRectFill(rect)
var maskImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
var maskLayer = CALayer()
maskLayer.contents = maskImage
maskLayer.contentsRect = CGRectMake(0, 0, self.imageView.bounds.width, self.imageView.bounds.height)
self.imageView.image = UIImage(named: "pictobemasked.png")
self.imageView.layer.mask = maskLayer;
}
}
InformationsquelleAutor user2732722 | 2014-12-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Leider haben Sie gebeten, Ihre Frage eher schlecht - Sie haben nicht gesagt, was es ist, dass Sie tatsächlich versuchen zu tun! Es sieht aber aus, als ob Sie versuchen könnten, Punsch, ein rechteckiges Loch in Ihrem Bild anzuzeigen unter Verwendung einer Maske. Wenn ja, ist Ihr code hat mindestens drei große Schwächen.
Einen Grund, warum dein code nicht funktioniert ist, dass eine Maske ist, die auf Transparenz beruht, nicht auf Farbe. Sie sind mit Deckweiß und undurchsichtig schwarz, die sind beide undurchsichtig, so dass es keinen Unterschied gibt. Sie brauchen Ihre zwei Farben sein:
Das zweite problem ist, dass Ihre Schicht hat keine Größe. Sie müssen, um es zu geben:
Das Dritte und größte problem ist, dass dein Bild mit der Maske, ist nie ins Ebenenmaske, weil Sie vergessen haben, entpacken Sie Ihren
CGImage
:Dass Letzte ist wirklich der killer, denn wenn Sie die
contents
zu einem UIImage ohne extrahieren seinerCGImage
, wird das Bild nicht leise, um in die Ebene. Es gibt keine Fehlermeldung, kein Absturz und kein Bild.Diese drei Korrekturen im code, ich war in der Lage, die Maske Stanzen rechteckige Loch in ein Bild. Also wenn das dein Ziel ist, diese änderungen zu erreichen.
Stellen Sie eine neue Frage! Wenn Sie blip mich mit einem Kommentar hier, ich werde versuchen, es zu betrachten. - Bitte beachten Sie, dass Sie nicht aus einer der oben genannten Fehler, wenn Sie gelesen hatte, das Kapitel meines Buches über die Schichten: apeth.com/iOSBook/ch16.html Alle drei Punkte sind explizit und nachdrücklich erwähnt.
Vielen Dank für der link zu Ihrem Buch in Kapitel. Ich gebe zu, dass ich brauche, um zu studieren gründlich erste. Ich bin fast in Zeitdruck, und das ist, warum ich habe angefangen zu hacken. Mein problem ist, dass ich nicht weiß, wie Sie die Maske auf das ursprüngliche Bild. Ich will zeigen, beliebiger Größe Bild. Ich Generiere den Inhalt der Maske programmgesteuert, so dass es die gleiche Größe wie das Bild. Dieses Loch in der Mitte der Maske ist nur ein test. Nachdem ich diese ausgeführt ich möchte eine anspruchsvollere Maske, die Bedürfnisse zu decken das ganze Bild. Ich würde jede Hilfe dankbar, um dieser Ausrichtung Recht. Danke!
Dies muss wirklich eine neue Frage!
Ich habe eine neue Frage hier : stackoverflow.com/questions/27714562/.... Vielen Dank für Ihre Hilfe.
InformationsquelleAutor matt