• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

iOS导航 View 背景图像UIViewContentModeScaleAspectFill不起作用

[复制链接]
菜鸟教程小白 发表于 2022-12-13 15:48:20 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

使用下面的代码,我向 UINavigationController( View ,而不是导航栏)添加了背景图像,并且我正在尝试缩放图像以填充 View ,因为我不知道用户的设备和方向。 (注意:我不想创建特定于设备或方向的尺寸/分辨率,因为我的背景图像可能会改变,所以这会花费太多时间。

- (void)viewDidLoad
{
    [super viewDidLoad];

    NSLog(@"%@", NSStringFromCGRect(self.navigationController.view.frame));

    // Set background image
    NSString *filename = [[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent"assets/images/wallpaper.jpg"];
    self.background = [[UIImageView alloc] initWithImage:[UIImage imageWithContentsOfFile:filename]];
    self.background.contentMode = UIViewContentModeScaleAspectFill;
    self.background.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
    self.background.center = CGPointMake(CGRectGetMidX(self.navigationController.view.frame), CGRectGetMidY(self.navigationController.view.frame));
    [self.navigationController.view insertSubview:self.background atIndex:0];
}

UIViewContentModeScaleAspectFill 和 UIViewAutoresizingFlexibleHeight/Width 应该使图像缩放以填充屏幕,而不管屏幕大小和方向如何。但是,我需要有关模拟器的问题的帮助:iOS 的行为取决于模拟器是否以纵向/横向模式启动。

下图显示了当应用以纵向模式启动然后旋转为横向时会发生什么。在纵向中,图像不会缩放以填充 View (图像上方/下方有黑条)。在横向中,图像被正确缩放以填充 View 。

image1

下图显示了当应用以横向启动然后旋转为纵向时会发生什么。在横向中,图像不会缩放以填充 View (图像两侧有黑条)。在纵向中,图像会正确缩放以填满 View 。

image2

为什么 iOS 处理这两种情况的方式不同,为什么图像不能正确缩放以填充 View 以及如何让 UIViewContentModeScaleAspectFill 正常工作?



Best Answer-推荐答案


将我的评论重新发布为答案,以便您将此问题标记为已解决。

您没有设置 UIImageView 的初始 frame。尝试类似

- (void)viewDidLoad
{
    [super viewDidLoad];

    ...

    self.background.frame = self.navigationController.view.bounds;
    [self.navigationController.view insertSubview:self.background atIndex:0];
}

关于iOS导航 View 背景图像UIViewContentModeScaleAspectFill不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36335890/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap