cocoa-touch - UIPickerView 在 iPhone 上占据了所有水平空间,但在 iPad 上却没有?

标签 cocoa-touch ios uipickerview

我注意到一些以前从未出现过的问题。 我为 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/

相关文章:

ios - 快速调整自定义单元格大小时遇到​​问题

ios - 编辑 UITextField 时显示 UIPickerView

iphone - UIKit 用来确定要加载的正确 nib 名称的模式是什么?

iphone - 如何在 iPhone/iPad 应用程序中支持西里尔字母?

ios - 如何将ios应用程序转换为Xamarin.ios应用程序?

swift - 使用 SwiftForms 实现动态 UIPickerView 列表

xcode - 如何在 xcode 4.2 Storyboard中使用 UIPickerview?

ios - 使用 c++11 代码构建 Cocoa touch 框架

ios - 用户键入新行时如何向 UITextView 添加自动缩进?

ios - 为什么在 observeValueForKeyPath 中启动此请求时获取的请求不是最新的?