у меня есть изображение как это изображение, которое оно представит на Альбомном режиме
таким образом, если поворачивают устройство к Портрету, как представить изображение как это
Похоже, вы пытаетесь обрезать изображение справа, оставляя верх, слева и снизу одинаковыми.
Две вещи, которые стоит попробовать:
1) Подкласс UIView и в методе drawRect
отрегулируйте прямоугольник и вытяните обрезанное изображение с помощью CGContextDrawImage (context, rect, sourceImage.CGImage)
.
2) Используйте CALayers. Вы можете настроить 'contentsRect' слоя imageView:
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;
Это разрезает изображение пополам по ширине. masksToBounds
заботится об отсечении подслоев (если они у вас есть). Вы можете настроить единичный прямоугольник contentsRect
, чтобы отрегулировать, где вы хотите срезать. Вы также можете настроить собственные границы imageView, чтобы они соответствовали размеру.
У этого есть дополнительный бонус в том, что настройка contentRect автоматически анимируется, поэтому, когда вы делаете поворот, ширина хорошо анимируется.
// 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;
Вам придется работать со слоем представления.
Вы можете найти соответствующие инструкции по адресу https://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/CoreAnimation_guide/Articles/Layers.html
Надеюсь, это поможет.
Спасибо,
Джим.