菜鸟教程小白 发表于 2022-12-13 15:48:20

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


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

<pre><code>- (void)viewDidLoad
{
    ;

    NSLog(@&#34;%@&#34;, NSStringFromCGRect(self.navigationController.view.frame));

    // Set background image
    NSString *filename = [[ bundlePath] stringByAppendingPathComponent:@&#34;assets/images/wallpaper.jpg&#34;];
    self.background = [ initWithImage:];
    self.background.contentMode = UIViewContentModeScaleAspectFill;
    self.background.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
    self.background.center = CGPointMake(CGRectGetMidX(self.navigationController.view.frame), CGRectGetMidY(self.navigationController.view.frame));
    ;
}
</code></pre>

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

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

<p> <a href="/image/8XVVB.png" rel="noreferrer noopener nofollow"><img src="/image/8XVVB.png" alt="image1"/></a> </p>

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

<p> <a href="/image/wUQpR.png" rel="noreferrer noopener nofollow"><img src="/image/wUQpR.png" alt="image2"/></a> </p>

<p>为什么 iOS 处理这两种情况的方式不同,为什么图像不能正确缩放以填充 View 以及如何让 UIViewContentModeScaleAspectFill 正常工作?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>将我的评论重新发布为答案,以便您将此问题标记为已解决。</p>

<p>您没有设置 <code>UIImageView</code> 的初始 <code>frame</code>。尝试类似</p>

<pre><code>- (void)viewDidLoad
{
    ;

    ...

    self.background.frame = self.navigationController.view.bounds;
    ;
}
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于iOS导航 View 背景图像UIViewContentModeScaleAspectFill不起作用,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/36335890/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/36335890/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: iOS导航 View 背景图像UIViewContentModeScaleAspectFill不起作用