UIDatePicker在iPhone中调整大小

时间:2014-08-22 18:31:21

标签: ios iphone ipad xamarin.ios uidatepicker

当用户点击UITextField时,我正在尝试显示UIDatePicker。 在iPad上我已经使用了这段代码并且效果很好但是在iPhone上UIDatePicker被削减了。 这是我的代码

UIBarButtonItem btnCancel;
UIBarButtonItem btnFlexibleSpace;
UIBarButtonItem btnDone;
UIBarButtonItem[] btnItems;
btnCancel = new UIBarButtonItem(UIBarButtonSystemItem.Cancel, KBToolbarButtonDoneHandler);
btnFlexibleSpace = new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace, null);
btnDone = new UIBarButtonItem(UIBarButtonSystemItem.Done, pickerDoneHandler);
btnItems = new UIBarButtonItem[] { btnCancel, btnFlexibleSpace, btnDone }; 
myToolbar.SetItems(btnItems, true);

UIDatePicker dpPurchaseDate;
dpPurchaseDate = new UIDatePicker(new RectangleF(0,44,this.View.Bounds.Width,216));
dpPurchaseDate.Mode = UIDatePickerMode.Date;
dpPurchaseDate.MaximumDate = NSDate.Now;
dpPurchaseDate.TimeZone = NSTimeZone.LocalTimeZone;
dpPurchaseDate.UserInteractionEnabled = true;
dpPurchaseDate.BackgroundColor = UIColor.White;

UIView pDateView;
pDateView = new UIView (new RectangleF (0, 0, this.View.Bounds.Width, 260));
pDateView.AddSubview (myToolbar);
pDateView.AddSubview (dpPurchaseDate);
evaluationDate.InputView = pDateView;

在iPad上它看起来像这样。 iPad Image

在iPhone中它看起来像这样 iPhone Image

关于为什么会发生这种情况的任何想法?

4 个答案:

答案 0 :(得分:1)

尝试添加此选项以强制调整选择器视图的大小

for (UIView * subview in dpPurchaseDate.subviews) {
        subview.frame = dpPurchaseDate.bounds;
    }

如果这不起作用,请将this.View.Bounds.Width分配给浮点数并查看值是什么。也许由于某种原因它被设置为景观宽度。

答案 1 :(得分:1)

您创建UIDatePicker而不设置任何调整大小的蒙版或自动布局约束以自动调整其帧,因此默认情况下,无论其超级视图如何,它都会保持其大小。


处理自动调整的最简单方法是设置UIView' autoresizingMask

dpPurchaseDate.autoresizingMask = (UIViewAutoresizingFlexibleWidth |     // Grow horizontally
                                   UIViewAutoresizingFlexibleTopMargin); // Keep at the bottom of the superview

您可以尝试使用Interface Builder进行大小调整。

答案 2 :(得分:0)

有两种解决方案可以达到目标。

  1. 为iphone和ipad创建两个.xib文件,然后根据iphone屏幕在框架中添加需要对象并映射它们。

  2. 以编程方式管理pickerview框架以及要在iphone和ipad中显示的其他对象

答案 3 :(得分:-1)

UIDatePicker的高度为162.如果更改以下内容,则视图的大小将适当调整以适应。

UIDatePicker dpPurchaseDate;
dpPurchaseDate = new UIDatePicker(new RectangleF(0,44,this.View.Bounds.Width,162));

另外,改变其超级视图:

UIView pDateView;
pDateView = new UIView (new RectangleF (0, 0, this.View.Bounds.Width, 162));