سؤال

تابعت تعليمي كبير (http://iphone.zcentric.com/2008/08/28/using-a-uiimagepickercontroller/) على استخدام UIImagePickerController للحصول على الصور من ألبوم الصور أو الكاميرا على اي فون.المشكلة أن البرنامج التعليمي هو قليلا مؤرخة والوثائق يستشهد الطريقة المستخدمة من قبل المندوب بأنها انخفضت منذ 3.0.المشكلة هي الوثائق فشلت في تقديم أدلة إلى ما استخدم في المكان ؟ إهمال الطريقة:

– imagePickerController:didFinishPickingImage:editingInfo:

الأسلوب أعلاه يستخدم على النحو التالي:

- (void) imagePickerController:(UIImagePickerController*)picker didFinishPickingImage:(UIImage*)img editingInfo:(NSDictionary*)editInfo
{

    image.image = img;
    [[picker parentViewController] dismissModalViewControllerAnimated:YES];


}

السؤال: ما يستخدم حاليا في مكان انتقدت الأسلوب ؟

هل كانت مفيدة؟

المحلول

نقلا عن أبل الوثائق:

imagePickerController:didFinishPickingImage:editingInfo:

يقول المندوب أن المستخدم التقطت صورة.هذا الأسلوب هو اختياري.(إهمال في نظام التشغيل اي فون 3.0. استخدام imagePickerController:didFinishPickingMediaWithInfo: بدلا من ذلك.)

نصائح أخرى

وهنا كيفية استخدام صورة جديدة المنتقى API باختصار.

أولا كنت في حاجة الى الدرجة أعلن مثل هذا لأنه وضع نفسه مثل الصورة المنتقى مندوب:

@interface MyClass : UIViewController <UINavigationControllerDelegate, UIImagePickerControllerDelegate> {
UIImagePickerController*    imagePicker;
}
@property(nonatomic,retain) UIImagePickerController* imagePicker;

- (IBAction) takePicture:(id)sender;

@end

طريقة إحضار صورة المنتقى من شأنه أن يذهب شيء من هذا القبيل.إنه أعلن هنا IBAction حتى تتمكن من الأسلاك مباشرة إلى عنصر تحكم (مثل زر) في واجهة البناء.فإنه يتحقق أيضا حتى لو كنت على اي فون إحضار واجهة الكاميرا ولكن على آي بود تاتش أنه يجلب معرض المنتقى:

#import <MobileCoreServices/UTCoreTypes.h>
...
@synthesize imagePicker = _imagePicker;
...

- (void) takePicture:(id)sender
{
        if (!_imagePicker) {
            self.imagePicker = [[UIImagePickerController alloc] init];
            self.imagePicker.delegate = self;
        }

        if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
            self.imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
            NSArray* mediaTypes = [UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypeCamera];
            self.imagePicker.mediaTypes = mediaTypes;
        } else {
            self.imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 
            self.imagePicker.allowsImageEditing = YES; 
        }

    [self presentModalViewController:self.imagePicker animated:YES];
}

ثم عليك هاتين الطريقتين:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    [[picker parentViewController] dismissModalViewControllerAnimated:YES]; 

    // MediaType can be kUTTypeImage or kUTTypeMovie. If it's a movie then you
    // can get the URL to the actual file itself. This example only looks for images.
    //   
    NSString* mediaType = [info objectForKey:UIImagePickerControllerMediaType];
    // NSString* videoUrl = [info objectForKey:UIImagePickerControllerMediaURL];

    // Try getting the edited image first. If it doesn't exist then you get the
    // original image.
    //
    if (CFStringCompare((CFStringRef) mediaType, kUTTypeImage, 0) == kCFCompareEqualTo) {       
        UIImage* picture = [info objectForKey:UIImagePickerControllerEditedImage];
        if (!picture)
            picture = [info objectForKey:UIImagePickerControllerOriginalImage];     

            // **You can now do something with the picture.
    }
    self.imagePicker = nil;
}

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker 
{ 
    [[picker parentViewController] dismissModalViewControllerAnimated:YES]; 
    self.imagePicker = nil;
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top