【问题标题】:UIDatePicker sizing in iPhone [closed]iPhone中的UIDatePicker大小调整[关闭]
【发布时间】:2014-08-22 18:31:20
【问题描述】:

我试图在用户点击 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 上看起来像这样。

在 iPhone 中是这样的

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

【问题讨论】:

  • 我的回答应该对你有用。请将我的答案标记为正确。

标签: ios iphone ipad xamarin.ios uidatepicker


【解决方案1】:

您创建 UIDatePicker 时没有设置任何调整大小的掩码或自动布局约束来自动调整其框架,因此默认情况下,无论其父视图如何,它都会保持其大小。


处理自动调整大小的最简单方法是设置UIViewautoresizingMask

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

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

【讨论】:

  • 如何设置自动约束?我真的是 Monotouch 的新手,这远远超出了我的理解范围。
  • 谢谢!现在它运行良好
  • 当然。在 iOS 上,您应该始终更喜欢 Interface Builder 来处理任何 UI 工作,尤其是所有即将推出的屏幕尺寸。
【解决方案2】:

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

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

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

【讨论】:

  • 还是什么都没有。我尝试了两台设备和模拟器。在所有这些上,报告的宽度都是 320。
【解决方案3】:

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

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

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

【讨论】:

    【解决方案4】:

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

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

    另外,这样改变它的superview:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-14
      • 1970-01-01
      • 2014-01-13
      • 2011-10-04
      • 1970-01-01
      • 2013-04-08
      • 2020-09-24
      • 2021-02-15
      相关资源
      最近更新 更多