2014-01-09 5 views
13

Ich benutze UIImagePickerController, um dem Benutzer ein Bild zu machen. Ich möchte ihm erlauben, es später zu bearbeiten, aber was auch immer ich mache, ich bekomme nichts. Hier ist mein Code (ich verwende Xamarin):UIImagePickerController Ermöglicht das Bearbeiten funktioniert nicht

UIImagePickerController imagePicker = new UIImagePickerController(); 
       // set our source to the camera 
       imagePicker.SourceType = UIImagePickerControllerSourceType.Camera; 
       // set what media types 
       //imagePicker.MediaTypes = UIImagePickerController.AvailableMediaTypes (UIImagePickerControllerSourceType.Camera); 
       // show the camera controls 
       imagePicker.ModalPresentationStyle = UIModalPresentationStyle.CurrentContext; 
       imagePicker.ShowsCameraControls = true; 
       imagePicker.AllowsEditing = true; 
       imagePicker.SetEditing (true,true); 
       imagePicker.PreferredContentSize = new SizeF(900,600); 
       imagePicker.CameraCaptureMode = UIImagePickerControllerCameraCaptureMode.Photo; 
       imagePicker.Title="taste.eat. image"; 
       // attach the delegate 
       imagePicker.Delegate = new ImagePickerDelegate(); 
       // show the picker 
       NavigationController.PresentViewController(imagePicker, true,null); 

Fehle ich etwas?

EDIT:

ich das Tutorial gefolgt und ich bin immer mit dem Rechteck auf dem Bildschirm, aber wenn ich es nur schwenken oder zoomen einmal in die Mitte zurückschnappt hebe ich meinen Finger. Ist es möglich, von der Fotoanwendung auf diesen Bildschirm zu gelangen?

Image from the photos application

+0

Hey, hast du es herausgefunden? Ich habe das gleiche Problem. – Yevgeni

+4

Von meinem Verständnis "erlaubt" erlaubtEdisting einfach das Foto zuzuschneiden.Es zeigt nicht die iOS-Bildbearbeitungsfunktion in der Foto-App an, wie Sie im Screenshot zeigen. – Jack

+0

Sie können nur zuschneiden. Es tut uns leid. – Xcoder

Antwort

19

Die AllowsEditing Eigenschaft ermöglicht es der Benutzer einfach auf ein Quadrat zu beschneiden, wenn ein Bild Kommissionierung und das Video zu schneiden, wenn ein Video Kommissionierung.

Alle anderen Funktionen müssen mit benutzerdefinierter Benutzeroberfläche und Code implementiert werden.

Sehen Sie diese Frage: iPhone SDK - How to customize the crop rect in UIImagePickerController with allowsEditing on?

Was Sie im Screenshot zeigen ist nicht Teil der UIImagePickerController leider

31

Wenn UIImagePickerController Delegierter -imagePickerController mit: didFinishPickingMediaWithInfo:, erhalten wir das Bild mit

UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage]; 

Dieser Code gibt immer das Originalbild zurück, auch wenn die Bearbeitung eingeschaltet ist.

Versuchen Sie es mit

UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage]; 

Dies wird das bearbeitete Bild zurück, wenn die Bearbeitung eingeschaltet ist.

Hoffe, das hilft.

+0

Dieser einfache Fehler an meinem Ende hat mich verrückt gemacht, danke für die Hilfe! –

0

Es gibt keine Möglichkeit zu enable filters, indem einfach die Eigenschaft wie allowsEditing = YES geändert wird. Es wird nur ein Zuschneidewerkzeug angezeigt. Laut Ihrem Screenshot sieht es so aus, als hätten Sie eine Buggy-Open-Source-Bibliothek integriert und ohne den Source-Code zu betrachten, wäre es schwierig, Ihren Center-Cropping-Fehler zu beheben.

Besser, einige konkrete Details über Ihre Implementierung zu posten oder zu standard open source library wechseln.

1

SWIFT 3

Ich war eine harte Zeit, das beschnittene Bild Rückkehr (einfache Fehler an meinem Ende). Anstatt UIImagePickerControllerOriginalImage zu verwenden, benötigen Sie UIImagePickerControllerEditedImage. Siehe unten:

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { 
    // The info dictionary contains multiple representations of the image, and this uses the cropped image. 
    let selectedImage = info[UIImagePickerControllerEditedImage] as! UIImage 

    // Set yourImageView to display the selected image. 
    yourImage.image = selectedImage 

    // Dismiss the picker. 
    dismiss(animated: true, completion: nil) 
} 
0

Es wird so funktionieren.

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { 
    let selectedImage = info[UIImagePickerControllerEditedImage] as! UIImage 

    userPhoto.image = selectedImage 

    dismiss(animated: true, completion: nil) 
}