title: adding textView as a subview of a view and adding this view to video
body: <p>I am working in an application in which i am dealing with video . In this application i want to add the text with the video by using the <code>UITextView</code>.For this i have created the <code>UITextView</code> programmatically and added it as a subview of the <code>UIView</code> like this.</p>
  
  <pre><code>[self.view addSubview:textView];
  </code></pre>
  
  <p>But as soon as i add this view to the video like this--</p>
  
  <pre><code>[parentLayer addSublayer:textView];
  </code></pre>
  
  <p>i am getting the error like this--</p>
  
  <blockquote>
    <p>Thread 1:EXC_BAD_ACCESS (Code=1 Address=0x18)</p>
  </blockquote>
  
  <p>please help me for getting this.Following is code that i have done so far for achieve this.</p>
  
  <pre><code>-(void)displayTextInVideo
   {
   if (!self.videoAsset) {
      UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Please Load a Video Asset First"
                                                     delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
      [alert show];
      return;
  }
  AVMutableComposition* mixComposition = [AVMutableComposition composition];
  
  AVMutableCompositionTrack *compositionVideoTrack = [mixComposition addMutableTrackWithMediaType:AVMediaTypeVideo  preferredTrackID:kCMPersistentTrackID_Invalid];
  AVAssetTrack *clipVideoTrack = [[self.videoAsset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0];
  [compositionVideoTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, self.videoAsset.duration)
                                 ofTrack:clipVideoTrack
                                  atTime:kCMTimeZero error:nil];
  
  [compositionVideoTrack setPreferredTransform:[[[self.videoAsset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0] preferredTransform]];
  
  CALayer *aLayer = [CALayer layer];
  aLayer.frame = CGRectMake(0, 0, 30, 30); //Needed for proper display. We are using the app icon (57x57). If you use 0,0 you will not see it
  aLayer.opacity = 0.75; //Feel free to alter the alpha here
  //Create layer with watermark text instead of image
  CGSize videoSize = [self.videoAsset naturalSize];
  UITextView *textView =[[UITextView alloc]init];
  textView.frame=CGRectMake(0,0,282,210);
  [textView setReturnKeyType:UIReturnKeyDone];
  [self.view addSubview:textView];
  CALayer *parentLayer = [CALayer layer];
  CALayer *videoLayer = [CALayer layer];
  
  parentLayer.frame = CGRectMake(0, 0, videoSize.width, videoSize.height);
  videoLayer.frame = CGRectMake(0, 0, videoSize.width, videoSize.height);
  [parentLayer addSublayer:videoLayer];
  [parentLayer addSublayer:aLayer];
  [parentLayer addSublayer:textView]; //ONLY IF WE ADDED TEXT
  //Create composition
  AVMutableVideoComposition* videoComp = [AVMutableVideoComposition videoComposition];
  videoComp.renderSize = videoSize;
  videoComp.frameDuration = CMTimeMake(1, 30);
  videoComp.animationTool = [AVVideoCompositionCoreAnimationTool      videoCompositionCoreAnimationToolWithPostProcessingAsVideoLayer:videoLayer inLayer:parentLayer];
  //Create instruction to insert layer
  AVMutableVideoCompositionInstruction *instruction = [AVMutableVideoCompositionInstruction videoCompositionInstruction];
  instruction.timeRange = CMTimeRangeMake(kCMTimeZero, [mixComposition duration]);
  AVAssetTrack *videoTrack = [[mixComposition tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0];
  AVMutableVideoCompositionLayerInstruction* layerInstruction = [AVMutableVideoCompositionLayerInstruction videoCompositionLayerInstructionWithAssetTrack:videoTrack];
  instruction.layerInstructions = [NSArray arrayWithObject:layerInstruction];
  videoComp.instructions = [NSArray arrayWithObject: instruction];
  
  NSString *destPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0]stringByAppendingPathComponent:@"NewwatermarkVideo.mp4"];
  NSURL *exportUrl = [NSURL fileURLWithPath:destPath];
  
  
  
  if ([[NSFileManager defaultManager] fileExistsAtPath:destPath])
  {
      [[NSFileManager defaultManager] removeItemAtPath:destPath error:nil];
  }
  
  
  
  AVAssetExportSession *exporter = [[AVAssetExportSession alloc] initWithAsset:mixComposition
                                                                    presetName:AVAssetExportPresetHighestQuality];
  exporter.outputURL=exportUrl;
  exporter.outputFileType = AVFileTypeQuickTimeMovie;
  exporter.shouldOptimizeForNetworkUse = YES;
  exporter.videoComposition = videoComp;
  [exporter exportAsynchronouslyWithCompletionHandler:^{
      dispatch_async(dispatch_get_main_queue(), ^{
          [self exportDidFinish:exporter];
      });
  }];
  }
  </code></pre>
  
  <p>Any help will be appreciated.</p>