目标 c 中 didload 方法开始时的 LandscapeOrientation
Posted
技术标签:
【中文标题】目标 c 中 didload 方法开始时的 LandscapeOrientation【英文标题】:LandscapeOrientation on start of didload method in objective c 【发布时间】:2012-01-08 06:56:39 【问题描述】:我已经制作了一个 iPad 应用程序,
当我第一次以纵向模式加载我的应用程序时它工作正常,但是当我第一次以横向模式加载我的应用程序时,它只采用纵向模式的坐标,因为在我的 didLoad
方法中我给出仅纵向模式的坐标。
现在需要在我的didLoad
方法中给出横向模式的坐标。
我在 didLoad 方法中尝试了这个
if (interfaceOrientation == UIInterfacePortraitmode ||
interfaceOrientation == UIInterfaceUpsideDown)
// do this....
else
// do this....
但我无法在 didLoad
方法中编写 if/else 的条件。
我该怎么办?
【问题讨论】:
【参考方案1】:您可以进行如下处理 -
-(void) viewWillAppear: (BOOL) animated
[super viewWillAppear: animated];
[self updateLayoutForNewOrientation: self.interfaceOrientation];
-(void) willAnimateRotationToInterfaceOrientation: (UIInterfaceOrientation) interfaceOrientation duration: (NSTimeInterval) duration
[self updateLayoutForNewOrientation: interfaceOrientation];
最后是自定义方法 -
- (void) updateLayoutForNewOrientation: (UIInterfaceOrientation) orientation
if (UIInterfaceOrientationIsLandscape(orientation))
// Do some stuff
else
// Do some other stuff
【讨论】:
【参考方案2】:-(void) viewWillAppear: (BOOL) animated
[super viewWillAppear: animated];
[self adjustViewtForNewOrientation: self.interfaceOrientation];
-(void) willAnimateRotationToInterfaceOrientation: (UIInterfaceOrientation) interfaceOrientation duration: (NSTimeInterval) duration
[self adjustViewtForNewOrientation: interfaceOrientation];
- (void) adjustViewtForNewOrientation: (UIInterfaceOrientation) orientation
if (UIInterfaceOrientationIsLandscape(orientation))
// Do some stuff
else
// Do some other stuff
在您的 ViewDidLaod() 方法中也调用 adjustViewtForNewOrientation
,
【讨论】:
【参考方案3】:我有类似的issue 和 UIScrollView。我按照here 的建议对齐子视图来修复它。
- (void)alignSubViews
// Position all the content views at their respective page positions
scrollView.contentSize = CGSizeMake(self.contentViews.count * scrollView.bounds.size.width,
scrollView.bounds.size.height);
NSUInteger i = 0;
for (UIView *v in self.contentViews)
v.frame = CGRectMake(i * scrollView.bounds.size.width, 0,
scrollView.bounds.size.width, scrollView.bounds.size.height);
i++;
- (void)viewDidLoad
[super viewDidLoad];
//Setup subviews and then align the views.
[self alignSubViews];
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
duration:(NSTimeInterval)duration
[self alignSubViews];
scrollView.contentOffset = CGPointMake(self.currentPage * scrollView.bounds.size.width, 0);
【讨论】:
以上是关于目标 c 中 didload 方法开始时的 LandscapeOrientation的主要内容,如果未能解决你的问题,请参考以下文章
H3C WX2510HF 无线控制器 + WA4320H-ACN实现三个LAN口提供有线接入业务时的配置说明
在 Xcode 中复制目标时,有没有办法设置目标在创建之前或创建时的名称?