如何在目标 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 的背景颜色