Masquage d'une image rapide à l'aide de CALayer et UIImage
Je suis de programmation rapide. Je veux masque d'une image à l'aide de CALayer et UIImage. Je crée mon masque d'image par programmation. Le masque créé l'image est une UIImage et fonctionne très bien quand je l'ai vue sur son propre. Mais quand je l'utilise comme un masque de la totalité de l'écran devient blanc. Je suppose que mon problème est dans la configuration de la CALayer objet. Je vous remercie de votre aide. Merci!
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;
}
}
OriginalL'auteur user2732722 | 2014-12-30
Vous devez vous connecter pour publier un commentaire.
Malheureusement, vous avez demandé à votre question plutôt mal vous n'avez pas dit ce que c'est que vous êtes en train d'essayer de le faire! Il semble, cependant, que si vous pouvez essayer de percer un trou rectangulaire dans l'image vue à l'aide d'un masque. Si oui, votre code a au moins trois énormes défauts.
Une raison quelconque, votre code ne fonctionne pas c'est qu'un masque est basée sur la transparence, pas sur la couleur. Vous êtes à l'aide d'un blanc opaque et d'un noir opaque, qui sont à la fois opaque, donc il n'y a pas de différence. Vous avez besoin de vos deux couleurs comme ceci:
Le deuxième problème, c'est que votre couche n'a pas de taille. Vous avez besoin de lui donner un:
Le troisième et le plus grand problème, c'est que votre image de masque n'est jamais à entrer dans votre calque de masque, parce que vous avez oublié d'en extraire les
CGImage
:Que la dernière est vraiment le tueur, parce que si vous définissez la
contents
à une UIImage sans extraire de sonCGImage
, l'image ne silencieusement pour entrer dans la couche. Il n'y a pas de message d'erreur, pas de plantage et pas d'image.Faire de ces trois corrections dans votre code, j'ai réussi à faire le masque de percer un trou rectangulaire dans une image. Donc si c'est votre but, ces changements permettront de l'atteindre.
Poser une nouvelle question! Si vous blip moi avec un commentaire ici, je vais essayer de le regarder. - S'il vous plaît noter que vous n'auriez pas fait à l'un d'erreurs si vous aviez lu le chapitre de mon livre sur les couches: apeth.com/iOSBook/ch16.html Toutes les trois points sont explicitement et clairement mentionné.
Merci pour le lien pour vous chapitre de livre. J'avoue que j'ai besoin d'étudier à fond en premier. Je suis presque à la pression du temps et c'est pourquoi j'ai commencé à hacker. Mon problème est que je ne sais pas comment faire pour aligner le masque sur l'image d'origine. Je veux montrer l'arbitraire de la taille de l'image. Je générer le contenu du masque par programme de sorte qu'il est de la même taille que l'image. Ce trou dans le milieu du masque est juste un test. Après je me procurer cette course, je veux avoir plus sophistiqués masque qui doit couvrir l'ensemble de l'image. J'apprécierais toute aide pour obtenir cet alignement droit. Merci!
Ce doit vraiment être une nouvelle question!
J'ai posté une nouvelle question ici : stackoverflow.com/questions/27714562/.... Merci pour votre aide.
OriginalL'auteur matt