ipad 的 kal 日历的 UI 问题?
Posted
技术标签:
【中文标题】ipad 的 kal 日历的 UI 问题?【英文标题】:UI Issue with kal calendar for ipad? 【发布时间】:2012-01-12 12:51:22 【问题描述】:我的 iPad 版 Kal 日历出现 UI 问题。在 iPad 上有一个空白空间,但在 iPhone 上没问题。我怎样才能让它适合 iPad 上的框架?
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
[kal.view setFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
else if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
[kal.view setFrame:CGRectMake(0, 0,768 ,1004)];
我尝试使用上面列出的代码,但它对我不起作用!
【问题讨论】:
尝试放置一个断点并调试您的代码以检查是否到达该行代码。 @Rajeel UI_USER_INTERFACE_IDIOM 工作正常!.... UI_USER_INTERFACE_IDIOM 工作正常..!但是框架是一样的,有人知道为什么会这样吗!任何建议!请! 很可能作者没有想到 iPad 并且按钮有固定大小 是的:分支 Kal 并修复它! 【参考方案1】:在 KalGridView.m 中你会找到这个。
const CGSize kTileSize = 46.f, 44.f ;
我会将代码更改为一个属性,您可以在其中将框架动态设置为惯用语和/或方向。
在 KalGridView.m 中
const CGSize kTileSize = 109.0f, 109.0f ;
在 KalView.m 中
- (void)addSubviewsToHeaderView:(UIView *)headerView
…
for (CGFloat xOffset = 0.f; xOffset < headerView.width; xOffset += 109.f, i = (i+1)%7)
CGRect weekdayFrame = CGRectMake(xOffset, 30.f, 109.f, kHeaderHeight - 29.f);
UILabel *weekdayLabel = [[UILabel alloc] initWithFrame:weekdayFrame];
weekdayLabel.backgroundColor = [UIColor clearColor];
weekdayLabel.font = [UIFont boldSystemFontOfSize:10.f];
weekdayLabel.textAlignment = UITextAlignmentCenter;
weekdayLabel.textColor = [UIColor colorWithRed:0.3f green:0.3f blue:0.3f alpha:1.f];
weekdayLabel.shadowColor = [UIColor whiteColor];
weekdayLabel.shadowOffset = CGSizeMake(0.f, 1.f);
weekdayLabel.text = [weekdayNames objectAtIndex:i];
[headerView addSubview:weekdayLabel];
[weekdayLabel release];
结果:
【讨论】:
仅供参考:如果您决定使const kTileSize
可变,则整个 Kal 中都有 extern
引用 kTileSize。解决此问题的一种方法是使用 tileSize 属性创建一个单例,该属性将允许在 Kal 中进行访问,但也允许您更改 ViewController 的 willRotateToInterfaceOrientation
中的大小。
@Vikingosegundo 我们可以在 KAL 日历中处理方向吗?
@Prabh 请注意,我不是 KAL 的作者。没有技术原因,为什么它不应该是可能的。但您可能必须更改代码。
他们说,“您通常会向您的 UIWindow 添加一个主视图控制器,例如 UINavigationController、UITabBarController 或通用 UIViewController。例如,这是通过调用:[myWindow addSubview:primaryViewController.view ]; 如果您通过以下方式将额外的视图控制器的 UIView 属性添加到 UIWindow(与主视图控制器处于同一级别): [myWindow addSubview:anotherController.view]; 这个额外的视图控制器将不会接收旋转事件并且永远不会旋转. 只有第一个添加到 UIWindow 的视图控制器会旋转。
这已经解决了 iPad 的问题,但对通用应用程序没有帮助。有什么办法让我也可以将这些精力用于通用应用程序?以上是关于ipad 的 kal 日历的 UI 问题?的主要内容,如果未能解决你的问题,请参考以下文章
(kal) 日历/tableview 视图层次结构在标签栏中中断
如何在 kal 日历中进行更改以显示来自 json webservice 的事件