Нуждаюсь в помощи о contentMode и autoresizingMask UIImageView

у меня есть изображение как это изображение, которое оно представит на Альбомном режиме

alt text

таким образом, если поворачивают устройство к Портрету, как представить изображение как это

alt text

7
задан Community 8 February 2017 в 14:26
поделиться

3 ответа

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

Две вещи, которые стоит попробовать:

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 автоматически анимируется, поэтому, когда вы делаете поворот, ширина хорошо анимируется.

7
ответ дан 6 December 2019 в 08:14
поделиться
// 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;
3
ответ дан 6 December 2019 в 08:14
поделиться

Вам придется работать со слоем представления.

Вы можете найти соответствующие инструкции по адресу https://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/CoreAnimation_guide/Articles/Layers.html

Надеюсь, это поможет.

Спасибо,
Джим.

0
ответ дан 6 December 2019 в 08:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: