i have picture like this image it will present on Landscape Mode
so if rotate device to Portrait, how to present image like this
i have picture like this image it will present on Landscape Mode
so if rotate device to Portrait, how to present image like this
You will have to work with view's layer.
You can find the appropriate guidelines at https://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/CoreAnimation_guide/Articles/Layers.html
Hope this helps.
Thanks,
Jim.
It looks like what you're trying to do is clip the image on the right, while leaving the top, left, and bottom the same.
Two things to try:
1) Subclass UIView and in the drawRect
method, adjust the rect and draw out the clipped image using CGContextDrawImage (context, rect, sourceImage.CGImage)
.
2) Use CALayers. You can adjust the 'contentsRect' of the imageView's layer:
CALayer* imageLayer = imageView.layer;
imageLayer.masksToBounds = YES;
CGRect rect;
if (inPortrait)
rect = CGRectMake(0.0, 0.0, 0.5, 1.0); // half size
else
rect = CGRectMake(0.0, 0.0, 1.0, 1.0); // full size
imageLayer.contentsRect = rect;
This slices the image in half along width. masksToBounds
takes care of clipping sublayers (in case you have them). You can tweak the contentsRect
unit rectangle to adjust where you want the cutoff. You may also want to adjust the imageView's own bounds as well to match the size.
This has an added bonus in that adjusting the contentsRect is automatically animated so when you do the rotation the width animates in and out nicely.
// Set the layer contents
view.layer.contents = [image CGImage];
// Stretch so that contents overflows the edges and keeps aspect ratio
view.layer.contentsGravity = kCAGravityResizeAspectFill;
// Clip off the overflow
view.layer.masksToBounds = YES;
// Set the frame
CGRect frame;
frame.origin = CGPointZero;
frame.size = view.superview.bounds.size;
view.frame = frame;
// Make sure it resizes when the superview does
view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;