如何在 iphone 应用程序中制作 UIScreen 边界景观

Posted

技术标签:

【中文标题】如何在 iphone 应用程序中制作 UIScreen 边界景观【英文标题】:how to make the UIScreen bounds landscape in iphone app 【发布时间】:2013-07-16 07:28:51 【问题描述】:

我在主视图上制作 subView,它工作正常,但问题是当我在其中添加任何东西时,它需要纵向边界,尽管我的应用程序是横向模式,我希望在横向模式下。

这是我的代码

 backgroundViewBounds= [[UIScreen mainScreen] bounds];

 backgroundView = [[UIView alloc]initWithFrame:backgroundViewBounds];
 [self.view.window addSubview:backgroundView] ;

 CGRect subViewBounds = CGRectMake(0,0,1100,1100) ;
 subView=[[UIView alloc]initWithFrame:subViewBounds];

 subView.backgroundColor=[UIColor colorWithPatternImage:[UIImage imageNamed:@"bgPopupback"]];

 [backgroundView addSubview:subView] ;


 UIImageView*popImageView=[[UIImageView alloc] initWithFrame:CGRectMake(600,745,165,108)];


popImageView.image=[UIImage imageNamed:@"popup3.png"];

[popImageView setTransform:CGAffineTransformMakeRotation(-M_PI / 2)];

[subView addSubview:popImageView];

我已经搜索过这个但没有得到任何工作有人说在 veiwWillappear 中使用但没有与我一起工作。

【问题讨论】:

【参考方案1】:

我使用方向来查看如何解释 UIScreen 大小:

UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
        if (orientation!=UIDeviceOrientationPortrait) 

            int width = screenRect.size.height;
            int height = screenRect.size.width;
            screenRect.size.height = height;
            screenRect.size.width = width;

            backgroundView.frame = screenRect;
        
        else
            backgroundView.frame = screenRect;
        

【讨论】:

在您的代码中 backgroundViewBounds 是屏幕矩形。然后检查屏幕方向。如果是纵向,则切换高度和宽度。 您已经拥有的代码将在屏幕上显示子视图 backgroundView = [[UIView alloc]initWithFrame:backgroundViewBounds]; [self.view.window addSubview:backgroundView] ;我的代码只是为了正确计算 backgroundViewBounds 我已经这样做了,它再次需要纵向边界 所以如果我理解正确你想在旋转时改变【参考方案2】:

如果您想在旋转时更改屏幕方向添加:

[[NSNotificationCenter defaultCenter]
     addObserver:self
     selector:@selector(deviceOrientationDidChangeNotification:)
     name:UIDeviceOrientationDidChangeNotification
     object:nil];

当方向改变时通知女巫代码运行。

我的设备方向

- (void)deviceOrientationDidChangeNotification:(NSNotification*)note

UIView * backgroundView = [self viewWithTag:10];
CGRect screenRect = [[UIScreen mainScreen] bounds];
UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
if (orientation!=UIDeviceOrientationPortrait) 

    int width = screenRect.size.height;
    int height = screenRect.size.width;
    screenRect.size.height = height;
    screenRect.size.width = width;

    backgroundView.frame = screenRect;
    mainView.center = backgroundView.center;

else
    backgroundView.frame = screenRect;
    mainView.center = backgroundView.center;


希望对你有帮助

【讨论】:

以上是关于如何在 iphone 应用程序中制作 UIScreen 边界景观的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iphone 应用程序中制作 UIScreen 边界景观

你将如何保护用 Swift 制作的 iPhone 应用程序中的文本?

如何制作自助服务终端应用 iPhone [关闭]

在 Xcode 中制作 iPhone App 时,如何在手机不添加默认玻璃效果眩光的情况下制作 app 图标?

如何将混合移动应用程序制作为 ipad/iphone 应用程序?

如何在 iPhone 中为所有版本制作应用程序 [关闭]