如何在目标 C 中更改 UIPickerView 的宽度

Posted

技术标签:

【中文标题】如何在目标 C 中更改 UIPickerView 的宽度【英文标题】:how to change the width of the UIPickerView in objective C 【发布时间】:2012-01-11 05:25:50 【问题描述】:

如何在objective C中改变UIPickerView的宽度,我用的是下面的代码,

    tempFiled = Data;
    [tempFiled resignFirstResponder];
    CGSize sizeOfPopover = CGSizeMake(200, 200);
    CGPoint positionOfPopover = CGPointMake(32, 325);
    [popOverControllerWithPicker presentPopoverFromRect:CGRectMake(positionOfPopover.x, positionOfPopover.y+10, 500, sizeOfPopover.height)
         inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];

但是当我试图改变 CGSize sizeOfPopover = CGSizeMake(200, 200); 中的宽度时它没有改变,我想减小选择器的大小。

【问题讨论】:

让我猜猜...弹出框正在改变大小,但里面的 UIPickerView 没有? UIPickerView 的宽度是一种无证魔法。只有几个值可以正常工作,基本上是纵向或横向 iPhone 的宽度(因此是 320 点或 640 点)。它不喜欢成为其他任何东西。不幸的是,这种行为没有记录在案。 你能改变弹出框内UIPickerView 的frame 属性吗?这可能允许您更改高度和宽度.... @MichaelDautermann 不,甚至弹出框都没有改变。抱歉先打错了。 @MichaelDautermann 我也尝试更改框架属性,但宽度和高度没有变化。我可以增加但不能减少宽度。 【参考方案1】:

我遇到了这个问题并以这种方式解决了它:

- (void)viewWillAppear:(BOOL)animated

    [super viewWillAppear:animated];

    CGRect frame = bpsPicker.frame;
    frame.size.width = 100; // width to be displayed on popover controller
    bpsPicker.frame = frame;


使用 ViewDidLoad() 更改此值还为时过早。

要明确 viewWillAppear 位于 UIViewController 中,它被传递给 UIPopover(这里称为“MyViewController.m”)。所以,

self.myViewController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil] ;
self.myViewController.delegate = self;
self.myViewController.contentSizeForViewInPopover = CGSizeMake(320, 360); // or whatever

self.myViewControllerPopover = [[UIPopoverController alloc] initWithContentViewController:self.myViewController] ; 

[self.myViewControllerPopover presentPopoverFromBarButtonItem:self.myToolBarButton permittedArrowDirections:UIPopoverArrowDirectionAny  animated:YES];

【讨论】:

以上是关于如何在目标 C 中更改 UIPickerView 的宽度的主要内容,如果未能解决你的问题,请参考以下文章

如何从另一个 UIPickerview 更改 UIPickerView 的字符串?

如何在iOS 7中更改UIPickerView中的文本字体?

如何在 iOS 14 中更改 UIPickerView 选择的色调颜色?

如何在 iPhone 中更改 UIPickerView 的背景颜色

如何在 SwiftUI 中使用多个 Picker 更改 UIPickerView 宽度?

如何在iOS 7下更改UIPickerView中文本的颜色?