我有这个项目,一旦用户使用datePicker
选择日期,就需要更改应用程序的屏幕方向。一旦用户点击Date
按钮,它将显示datePicker
。在人像模式下,第一张图像是datePicker
的正确布局。
将屏幕方向从横向更改为纵向]时。它将出现问题。请参考下图。
datePicker位于下面
一旦变为横向,下面的图像应该是正确的布局。
当您将屏幕方向更改回纵向时。 datePicker
布局已更改。请参考下图。
不正确的肖像布局
下面是使用的代码:
- (void)resizeView:(UIInterfaceOrientation)interfaceOrientation { //LOG(@"interfaceOrientation=%ld", (long)interfaceOrientation); //LOG(@"self.frame =%@", NSStringFromCGRect(self.frame)); //LOG(@"self.bounds=%@", NSStringFromCGRect(self.bounds)); CGFloat x, y, w, h; viewBack.frame = self.bounds; #define _HEIGHT_LABEL (40) #define _HEIGHT_PICKER (162) #define _HEIGHT_TOOLBAR (CGRectGetHeight(toolBar.frame))//(44) if (interfaceOrientation == UIInterfaceOrientationPortrait) { LOG(@"[Portrait]"); w = CGRectGetWidth(viewBack.frame); h = _HEIGHT_LABEL + _HEIGHT_PICKER*2 + _HEIGHT_TOOLBAR; viewPicker.frame = CGRectMake(0, 0, w, h); viewPicker.center = viewBack.center; x = 0; y = 0; w = CGRectGetWidth(viewPicker.frame); h = _HEIGHT_LABEL; lblTitle.frame = CGRectMake(x, y, w, h); x = 0; y = CGRectGetMaxY(lblTitle.frame); w = CGRectGetWidth(viewPicker.frame); h = _HEIGHT_PICKER; datePicker.frame = CGRectMake(x, y, w, h); x = 0; y = CGRectGetMaxY(datePicker.frame); w = CGRectGetWidth(viewPicker.frame); h = CGRectGetHeight(datePicker.frame); //datePickerと同じ timePicker.frame = CGRectMake(x, y, w, h); x = 0; y = CGRectGetMaxY(timePicker.frame); w = CGRectGetWidth(viewPicker.frame); h = _HEIGHT_TOOLBAR; toolBar.frame = CGRectMake(x, y, w, h); //LOG(@"tool =%@", NSStringFromCGRect(toolBar.frame)); } else if (interfaceOrientation == UIInterfaceOrientationLandscapeRight) { LOG(@"[Landscape]"); w = CGRectGetWidth(viewBack.frame); h = _HEIGHT_LABEL + _HEIGHT_PICKER + _HEIGHT_TOOLBAR; viewPicker.frame = CGRectMake(0, 0, w, h); viewPicker.center = viewBack.center; x = 0; y = 0; w = CGRectGetWidth(viewPicker.frame); h = _HEIGHT_LABEL; lblTitle.frame = CGRectMake(x, y, w, h); w = CGRectGetWidth(viewPicker.frame) / 2; //画面幅の半分 x = CGRectGetMidX(viewPicker.frame) - w; y = CGRectGetMaxY(lblTitle.frame); h = _HEIGHT_PICKER; datePicker.frame = CGRectMake(x, y, w, h); x = CGRectGetMidX(viewPicker.frame); y = CGRectGetMinY(datePicker.frame); //datePickerと同じ w = CGRectGetWidth(datePicker.frame); //datePickerと同じ h = CGRectGetHeight(datePicker.frame); //datePickerと同じ timePicker.frame = CGRectMake(x, y, w, h); x = 0; y = CGRectGetMaxY(datePicker.frame); w = CGRectGetWidth(viewPicker.frame); h = CGRectGetHeight(toolBar.frame);//44; toolBar.frame = CGRectMake(x, y, w, h); } #if 0 LOG(@"back =%@", NSStringFromCGRect(viewBack.frame)); LOG(@"base =%@", NSStringFromCGRect(viewPicker.frame)); LOG(@"image =%@", NSStringFromCGRect(imageViewBlackGraBar.frame)); LOG(@"label =%@", NSStringFromCGRect(lblTitle.frame)); LOG(@"date =%@", NSStringFromCGRect(datePicker.frame)); LOG(@"time =%@", NSStringFromCGRect(timePicker.frame)); LOG(@"tool =%@", NSStringFromCGRect(toolBar.frame)); LOG(@""); #endif }
[请帮助我解决此问题。我正在将近一个星期的时间,似乎根本没有任何进展。预先谢谢你
我有这个项目,一旦用户将使用datePicker选择日期,就需要更改应用程序的屏幕方向。用户点击“日期”按钮后,将显示datePicker。...
尝试调用[[自视图] layoutIfNeeded];在resizeView
您应该使用UITextField
而不是UILabel
并将日期选择器设置为textField的inputView
。