Изображение не заполняет всю ширину и высоту изображения.

У меня есть следующий код:

UIGraphicsBeginImageContext(CGSizeMake(self.captureImageView.frame.size.width, self.captureImageView.frame.size.height));
[image drawInRect: CGRectMake(0, 0, self.captureImageView.frame.size.width, self.captureImageView.frame.size.height)];
UIImage *smallImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();       
CGRect cropRect = CGRectMake(0, 0, self.captureImageView.frame.size.width, self.captureImageView.frame.size.height);
CGImageRef imageRef = CGImageCreateWithImageInRect([smallImage CGImage], cropRect);

[self.captureImageView setImage:[UIImage imageWithCGImage:imageRef]];

CGImageRelease(imageRef);

//rotation
[UIView beginAnimations:@"rotate" context:nil];
[UIView setAnimationDuration:0.5];
int degrees = [self rotationDegrees];
CGFloat radians =degrees * M_PI / 180.0;
self.captureImageView.transform = CGAffineTransformMakeRotation(radians);
[UIView commitAnimations];

при захвате изображения в альбомном режиме влево или вправо изображение, представленное в представлении uiimage, не заполняет весь frame.size и всегда является "коротким"

может какой-то один момент, что исправить / добавить в мой код?

2 ответа

Установите режим содержимого представления изображения, чтобы заполнить ( ссылка):

self.captureImageView.contentMode = UIViewContentModeScaleToFill;

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

Вам также необходимо установить contentMode как упомянуто @trojanfoe (в IB или коде). я использую UIViewContentModeScaleAspectFit (вместо UIViewContentModeScaleToFill) сохранить соотношение сторон изображения.

imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:imageName]];
imageView.contentMode = UIViewContentModeScaleAspectFit;
imageView.translatesAutoresizingMaskIntoConstraints = NO;
[self addSubview:imageView];
NSArray *horzConstraints =
  [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-(0)-[imageView]-(0)-|"
                                          options: NSLayoutFormatAlignAllCenterX
                                          metrics:nil
                                            views:@{@"imageView" : imageView}];
NSArray *vertConstraints =
  [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-(0)-[imageView]-(0)-|"
                                          options: NSLayoutFormatAlignAllCenterY
                                          metrics:nil
                                            views:@{@"imageView" : imageView}];
[self addConstraints:horzConstraints];
[self addConstraints:vertConstraints];

Замечания: self это супервизия imageView в этом фрагменте кода.

Другие вопросы по тегам