加载在一个景观上的UIDatePicker一个UINavigationController(Load

2019-07-29 17:54发布

我有一个支持自动旋转一个自定义的UINavigationController。 我也有我的看法,我扔到导航控制器的堆栈一个一个的UIDatePicker。 如果我开始在肖像日期选取器视图,然后将其旋转的自动旋转的作品。 如果我尝试加载日期选取器视图景观开始,视图是全乱了。 它看起来像它会如果它不支持旋转和框架仅有约一半的拾取可见光和偏离中心的。

我试着做一个支持这是问题,我试着创建了两个不同的观点和交换出来的情况下自动旋转,我自己日期选取器,我已经试过在viewWillAppear中的方法更改视图的帧大小。 他们似乎都不是为我工作的呢。

人对如何获得日期选取器横向显示正确导航控制器上有什么建议? 我可能我忽视的东西简单,答案就在我的面前,但是我没有找到它。

Answer 1:

我遇到了同样的问题。 当您在横向装入一个视图,而已经UIPicker不正确呈现。 我花了几个小时试图找到一个解决办法,直到我发现从修复从Llamagraphics此页面 。 您在具有选择器视图控制器的viewDidLoad中添加以下代码:

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

访问网页了解更多详情。 谢谢斯图尔特!



Answer 2:

下面的代码将用于纵向和横向模式下工作。 为此,您需要设置你的tableview框架起源一样,如下所示: -

_dateTableViewCell=[self.tableView dequeueReusableCellWithIdentifier:@"DatePickerCell"];
if (self.dateTableViewCell==nil)
{
    CGRect rect;
    self.dateTableViewCell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"DatePickerCell"];
    UIDatePicker *datePicker=[[UIDatePicker alloc]initWithFrame:frame];
    datePicker.datePickerMode=UIDatePickerModeDateAndTime;
    datePicker.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
    CGRect cellRect = self.dateTableViewCell.frame;
    cellRect.size.height = 216;
    self.dateTableViewCell.frame = cellRect;
    CGRect startRect = self.dateTableViewCell.frame;
    startRect.origin.x = 0.0;
    datePicker.frame = startRect;
    [self.dateTableViewCell.contentView addSubview:datePicker];
}


Answer 3:

嗯,我固定它。 我设法让一个检查,看看有什么取向度,然后取出日期选取器和代码,我重新创建日期选择器,并添加它。 这工作,这是不漂亮,但它的工作。



Answer 4:

添加日期选择器来查看是自动旋转(控制器的视图,而不是直接在窗口)。

设置self.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin self.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin



Answer 5:

下面是我工作。 当我创建的DatePicker,我让它觉得它在纵向模式:

[[UIApplication sharedApplication] setStatusBarOrientation: UIInterfaceOrientationPortrait  animated: NO];
datePicker = [[UIDatePicker alloc] initWithFrame: CGRectZero];
[[UIApplication sharedApplication] setStatusBarOrientation: curOrientation animated: NO];

所以基本上,我改变了方向,创建日期选择器,并改变方向回到马上到它以前。 我设置拾取器宽度(屏幕宽度)和高度(216)的其他地方。

我从另一页的线索。



Answer 6:

我有同样的问题,显示在iPad上水平调整的日期选择器(定时器模式)。 我不能让任何已知的解决方案,这个bug的工作,所以我解决了这个与丑陋的黑客其中涉及把两个datepickers视图 - 一个被调整的背景下,另一种是在标准尺寸(320像素)在前台...我知道,听起来很舒服,但它正确地显示,这就是最重要的。 这是苹果的错呢;)



文章来源: Loading a UIDatePicker in Landscape on a UINavigationController