如何在 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 应用程序中的文本?
在 Xcode 中制作 iPhone App 时,如何在手机不添加默认玻璃效果眩光的情况下制作 app 图标?