Question

I want to display a scaled down "preview" of another ViewController in another ViewController. Is this possible? No interaction are needed so it can basically be a screenshot, but scaled down. I can be solved by manually take a screenshot and save it as an image, but the ViewController contains a lot of localizations and are constantly updated, so if this can be done programatically.

https://www.dropbox.com/s/kd5vinrym1k7afk/Screenshot%202014-05-13%2015.20.17.png

Is this possible?

Edit: the sub view is stored in a storyboard

Edit: This is how I've solved it:

//Load the viewcontroller and view
previewViewController = [self.storyboard instantiateViewControllerWithIdentifier:[PLACEHOLDER_VIEWCONTROLLER_NAMES objectAtIndex:self.identifier]];
[self addChildViewController:previewViewController];
[self.placeholderView.superview addSubview:previewViewController.view];
previewViewController.view.transform = CGAffineTransformMakeScale(scale*2, scale*2);
CGPoint center = self.placeholderView.center;
center.y += 25;
previewViewController.view.center = center;
Was it helpful?

Solution

Use the viewController.view and then scale it down like:

viewController.view.transform = CGAffineTransformMakeScale(0.5, 0.5);

OTHER TIPS

Add your another view controller view as subview to first viewcontroller


[UIView animateWithDuration:2.0f animations:^{

    InnerView.userInteractionEnabled = NO;

    //Always starts from original scale
    InnerView.transform = CGAffineTransformMakeScale(0.5, 0.5);

    //Incremental scale
    //InnerView.transform = CGAffineTransformScale(InnerView.transform, 0.5, 0.5);


} completion:^(BOOL finished) {


    NSLog(@"in Half size");

}];




[UIView animateWithDuration:2.0f animations:^{

    InnerView.transform = CGAffineTransformIdentity;


} completion:^(BOOL finished) {

    InnerView.userInteractionEnabled = YES;

    NSLog(@"Normal size");


}];
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top