gpt4 book ai didi

ios - 如何在IOS中用横向图像填充背景?

转载 作者:行者123 更新时间:2023-12-01 18:23:08 27 4
gpt4 key购买 nike

我正在做的是使用从 UIImagePickerController 返回的图像填充 View 的背景。纵向模式下图像填充良好;但是,当在横向模式下填充为背景时,图像会重复,但我不知道为什么会发生这种情况。这是我用来调整图像大小的私有(private)方法。

+ (UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize landscape:(BOOL)landscape {
UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0);
[image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}

当调用此方法时,newsize 参数等于 View 边界大小(self.view.bounds.size)。在 View 转换为横向后访问大小,但图像不正确。

这是从 UIImagePickerController 获取图像后立即调用的代码。
-(void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
if (image.size.width > image.size.height) {
self.view.transform = CGAffineTransformRotate(self.view.transform, M_PI_2);
self.composition.landscapemode = YES;
} else {
self.composition.landscapemode = NO;
}
self.composition.image = [NewCompositionViewController imageWithImage:image scaledToSize:self.view.bounds.size landscape:self.composition.landscapemode];
self.view.backgroundColor = [UIColor colorWithPatternImage:self.composition.image];
[self dismissViewControllerAnimated:YES completion:nil];
}

最佳答案

[UIColor colorWithPatternImage:]用于平铺图像,因此它的行为应如此。

我建议使用屏幕大小的框架创建 UIImageView,为其设置图像,并将其添加为 subview :

UIImageView *backgroundImage = [[UIImageView alloc] initWithFrame:self.view.frame];
[backgroundImage setImage:self.composition.image];

// choose best mode that works for you
[backgroundImage setContentMode:UIViewContentModeScaleAspectFill];

[self.view insertSubview:backgroundImage atIndex:0];
//OR
[self.view addSubview:backgroundImage];
[self.view sendSubviewToBack:backgroundImage];

添加后,您可以旋转它并尝试自动调整大小的蒙版,以确保它在所有方向上都正确显示。确切的方法取决于您是否使用自动布局。

关于ios - 如何在IOS中用横向图像填充背景?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16015988/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com