2010-11-23 6 views
0

В приложении мне нужно взять изображение из UIView. Рамка этого вида - W 1800 и H 1200.performSelectorInBackground и выполнение операции пользовательского интерфейса

Это мероприятие занимает много времени, и экран держится там, пока эта деятельность не закончится.

Мне нужно выполнить это действие в фоновом режиме, чтобы пользователь мог продолжить другие действия.

Что лучше всего подходит для этого. Я пробовал с

- (void)performSelectorInBackground:(SEL)aSelector withObject:(id)arg 

Но приложение получило крах, поскольку это не позволяет работать с UI. Если я пойду с

- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait 

Экранные штыки там, если эта деятельность не закончится.

Мне нужно выполнить следующую деятельность в фоновом режиме

-(void) PrepareImageData 
{ 
    UIImage* frontViewImage = [self PreparefrontImage:[self GetSavedFrontImage]]; 
    [self SaveImageinDocumentWithName:frontViewImage FileName:@"frontview.png"]; 

    UIImage* rearViewImage = [self PrepareBackImage:[self GetSavedBackImage]];; 
    [self SaveImageinDocumentWithName:rearViewImage FileName:@"backview.png"]; 
} 
    -(UIImage*) GetSavedBackImage 
    { 
     UIImage* background; 
     UIImage* messageTextview; 
     UIImage* toTextView; 
     UIImage* fromTextView; 

     background  = [self GetImageFromView:self toRect:self.frame]; 

     CGRect rect = CGRectMake(0, 0, 1800, 1200); 
     UIGraphicsBeginImageContext(rect.size); 
     CGPoint backgroundPoint = CGPointMake(0,0); 
     [background drawAtPoint:backgroundPoint]; 
     UIImage* backImage = UIGraphicsGetImageFromCurrentImageContex(); 
     UIGraphicsEndImageContext(); 

     return backImage; 
    } 

    - (UIImage *) GetImageFromView:(UIView *)aView toRect:(CGRect)aRect 
    { 
     CGSize pageSize = aRect.size; 
     UIGraphicsBeginImageContext(pageSize); 
     [aView.layer renderInContext:UIGraphicsGetCurrentContext()]; 
     UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
     UIGraphicsEndImageContext(); 
     return image; 

    } 

Пожалуйста, помогите мне в этом.

Спасибо.

+2

Вам нужно добавить больше кода, связанного с тем, что именно вы пытаетесь достичь. – 2010-11-23 07:04:26

+0

Дополнительный код. – 2010-11-23 07:14:03

ответ

0

Я думаю, что ваша проблема кроется в простом представлении - приложение, пытающееся манипулировать видом такого размера таким образом, вероятно, скорее всего, будет убито ОС для использования слишком большого объема памяти, особенно в iOS 4. Икс. UIViews были ограничены 1024x1024 по очень веской причине.

Я бы рекомендовал изучить способы деления проблемы на куски, которые можно обрабатывать, не требуя так много памяти.

Смежные вопросы