gpt4 book ai didi

iphone - 改变 iPhone 方向,然后再改回来,我的视野会减半吗?

转载 作者:行者123 更新时间:2023-12-03 21:19:36 26 4
gpt4 key购买 nike

我的 iPhone 应用程序设置中有一个 View Controller ,这样当我将方向从纵向更改为横向时,我会更改 View 。当我将方向从横向更改回纵向时,初始 View 又回来了,只不过这次它全部挤在屏幕的左侧。最终,当我改变方向足够多次时,一切都会完全消失。这是初学者常见的问题吗?我可能做错了什么?

在我的根 Controller 中,仅当显示特定 View 时,我才允许更改方向:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
if (self.currentView == (NSInteger*)Chart || self.currentView == (NSInteger*)Detail) {
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}
return (interfaceOrientation == UIInterfaceOrientationPortrait);

其中 self.currentView 是我当前拥有的 View 的枚举。我想确保细节 View 保持为纵向 View ,但是当我在该 View 上更改方向时,我希望它将 View 更改为图表。同样,第一次时效果很好,但是当我从“图表”更改回“详细信息”时,它将“详细信息” View 上的所有控件都塞到了屏幕的左侧。

以下是我更改 View 的方法:

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{

if (self.currentView == (NSInteger*)Detail && (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft || toInterfaceOrientation == UIInterfaceOrientationLandscapeRight)) {
[[NSNotificationCenter defaultCenter] postNotificationName:@"changeView" object:self userInfo:[NSDictionary dictionaryWithObject:[NSNumber numberWithInt:Chart] forKey:@"view"]];
}

if (self.currentView == (NSInteger*)Chart && (toInterfaceOrientation == UIInterfaceOrientationPortrait)) {
[[NSNotificationCenter defaultCenter] postNotificationName:@"changeView" object:self userInfo:[NSDictionary dictionaryWithObject:[NSNumber numberWithInt:Detail] forKey:@"view"]];
}

最佳答案

@justin 我曾经这样做过,这让我遇到了和你一样的情况。也许你可以检查一下你是否没有做过这样的事情

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
CGRect rect;
if (interfaceOrientation == UIInterfaceOrientationPortrait || interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown) {
rect = CGRectMake(tableView.frame.origin.x,tableView.frame.origin.y,
tableView.frame.size.width - 50, tableView.frame.size.height - 30);
}
else {
rect = CGRectMake(tableView.frame.origin.x,aBar.frame.origin.y,
tableView.frame.size.width, tableView.frame.size.height);
}
[tableView setFrame:rect];
return YES;
}

我想要的只是在纵向模式下带有小框架的表格 View ,在不保存原始框架的情况下,我试图减小其宽度和高度,最终使表格 View 在多次旋转后变得非常小。

哈哈。我应该首先保存原始的表格 View 框架,然后执行类似的操作

if (interfaceOrientation == UIInterfaceOrientationPortrait || interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown) {
tableView.frame = CGRectMake(tableView.frame.origin.x,tableView.frame.origin.y,
tableView.frame.size.width - 50, tableView.frame.size.height - 30);
}
else {
tableView.frame = originalTableViewFrame;
}

关于iphone - 改变 iPhone 方向,然后再改回来,我的视野会减半吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6092025/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com