2014-07-11 1 views
2

J'ai réussi (avec l'aide de post) à ouvrir un PLStaticWallpaperImageViewController du cadre privé PhotoLibrary, qui permet le réglage direct du fond d'écran et de l'écran de verrouillage (en utilisant la même interface utilisateur que l'application Photos). Malheureusement, les fonctions de recadrage et de zoom ne semblent pas fonctionner, car les retouches sur la vue de l'image ne semblent pas se produire (la vue principale n'est pas non plus supprimée correctement après avoir appuyé sur les boutons annuler/régler, mais n'est pas si important).Le rognage/zoom ne fonctionne pas lors de la configuration iOS Fond d'écran utilisant le framework privé PhotoLibrary

J'ai un projet Xcode démontrant le paramètre de papier peint (peut être exécuté dans le simulateur ainsi qu'un appareil non jailbreaké):

https://github.com/newenglander/WallpaperTest/

Le code est assez basique, et implique une ViewController héritant de PLStaticWallpaperImageViewController et mettre en œuvre une méthode init similaire à ce qui suit:

- (id)initWithCoder:(NSCoder *)aDecoder { 
    self = [self initWithUIImage:[UIImage imageWithContentsOfFile:@"/System/Library/WidgetResources /ibutton/[email protected]"]]; 
    self.allowsEditing = YES; 
    self.saveWallpaperData = YES; 
    return self; 
} 

(Il sera nécessaire pour permettre l'accès à la photothèque après le premier lancement, et s Quelque raison que le popup pour cela vient derrière l'application, plutôt que sur le dessus.)

Peut-être quelqu'un a un aperçu de pourquoi le recadrage/zoom ne fonctionne pas, ou peut me donner une autre façon de définir le papier peint dans une application (destinée à Cydia plutôt qu'à l'App Store bien sûr)?

Répondre

1

Utilisez cet exemple de projet, qui fonctionne très bien. Ayez à l'intérieur le contrôle de la caméra et la mise en page personnalisée, recadrer l'image lorsqu'il est pris ou après avoir choisi de votre bibliothèque, j'ai utilisé pour mon projet et en très simple à personnaliser.

https://github.com/yuvirajsinh/YCameraView

// ---------- ---------- // réponse améliorée

Je prends un coup d'oeil sur votre projet et je voir 2 problème:

ici vous avez 3 avertissement de problème sémantique:

- (id)initWithUIImage:(id)arg1 cropRect:(struct CGRect { struct CGPoint { float x_1_1_1; float x_1_1_2; } x1; struct CGSize { float x_2_1_1; float x_2_1_2; } x2; })arg2; 

enter image description here

dans votre ViewController.m vous définissez pour obtenir l'image d'où?

 - (id)initWithCoder:(NSCoder *)aDecoder 
    { 
     // black_i 

//what directory is this? 
     self = [self initWithUIImage:[UIImage imageWithContentsOfFile:@"/System/Library/WidgetResources/ibutton/[email protected]"]]; 
//-------------------- 
     self.allowsEditing = YES; 
     self.saveWallpaperData = YES; 

     return self; 
    } 

i essayer de supprimer votre

- (id)initWithUIImage:(id)arg1 cropRect:(struct CGRect { struct CGPoint { float x_1_1_1; float x_1_1_2; } x1; struct CGSize { float x_2_1_1; float x_2_1_2; } x2; })arg2; 

Modifier le répertoire IMG pour:

self = [self initWithUIImage:[UIImage imageNamed:@"myImage.png"]]; 

et tout fonctionne bien mais ne peut pas rogner l'image, avec mon hub git YCameraView vous avez d'abord comprendre comment cela fonctionne fonction de recadrage si vous voulez utiliser crop ou plus simple, vous devez créer un fullScreen UICameraPicker permettre à l'utilisateur d'obtenir de la caméra ou de la bibliothèque et permettre l'édition dans cameraPicker alors vous pouvez charger une nouvelle image dans votre vue comme celui-ci

self = [self initWithUIImage:[UIImage imageNamed:imageSelected.image]]; 

pour une vue rejeter, vous ne pouvez pas parce que c'est une application complète permettent à l'utilisateur de fond d'écran setUp et vous ne pouvez pas mettre fin à l'application pour voir une SpringBoard, vous devez créer la première vue> picker> vue détaillée avec les paramètres pour un Home et LockScreen> puis rejeter et revenir à une première vue.

PS: Je pense que dans votre projet afin de permettre l'édition directe dans une vue que vous devez améliorer votre code avec une pincée et geste casserole sur le UIView

Hope this vous aider!

+0

Merci, dans cette bibliothèque, je ne peux toujours pas recadrer, bien que le zoom fonctionne. Mais je ne vois pas comment cela aide directement ma question. Avez-vous essayé mon projet d'échantillon? – newenglander

+0

@newenglander J'ai amélioré ma réponse pour aider sur votre problème – BlackSheep

+0

Merci. J'ai mis à jour le projet pour répondre à quelques-uns de vos points. Mais comme j'utilise un framework privé d'Apple qui est utilisé par l'application Photos elle-même, je ne veux pas faire le zoom et le recadrage moi-même, cela devrait être fait par la classe ('PLStaticWallpaperImageViewController') que j'utilise. – newenglander

Questions connexes