我注意到一些以前从未出现过的问题。
我为 iPad 做了一个项目,其中使用了多个水平相邻放置的 UIPickerView
。在这里,它们尊重我初始化它们的 CGRect
框架,这意味着将其他元素放置在它们的两侧没有问题。
现在我正在尝试在 iPhone 项目上执行此操作,并且这里 UIPickerView
坚持是唯一的元素。它自行调整大小以水平填充屏幕,并带有“周围”图形。
我尝试了不同的方法,将 UIPickerView
放置在不同的 View 中,然后调整该 super View 的大小,这只会导致剪切,而不是调整大小。另一件事是 UIPicker 坚持放置在屏幕中央。这基本上意味着,当将 UIPickerView
添加到屏幕时,即使其单个组件只有 70 px 宽,屏幕的 320 px 也会被用完。
我想要完成的是在屏幕右侧有一个 UIPicker
并在其左侧有一个按钮。
我在这里忽略了一些明显的事情吗?希望有人能伸出援手,提前致谢:)
没有比这更复杂的了:
UIView *container = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 250.0f, 165.0f)];
UIPickerView *picker = [[UIPickerView alloc] initWithFrame:container.frame];
[picker setDelegate:self];
[picker setDataSource:self];
[container addSubview:picker];
我设定的框架没有得到尊重。它占据了所有水平空间。
最佳答案
我尝试了你的代码,得到了相同的结果。
但是,您可以在创建选取器并将其添加到容器后设置框架,并且会考虑新的大小。这是我的测试用例,它适用于我在 iPhone 模拟器中使用 SDK 4.2 的情况:
- (void)viewDidLoad {
[super viewDidLoad];
UIPickerView* pv = [[[UIPickerView alloc] initWithFrame: CGRectMake(160, 100, 100, 216) ] autorelease];
pv.delegate = self;
pv.dataSource = self;
[self.view addSubview: pv];
pv.frame = CGRectMake(10, 10, 100, 216);
}
关于cocoa-touch - UIPickerView 在 iPhone 上占据了所有水平空间,但在 iPad 上却没有?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4286327/