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 的事件

添加 Kal 日历作为标签栏项目的根控制器,不使用导航控制器

无法在应用程序中显示 Kal UI

iOS UI 测试:如何查看日历中的约会?

在 iPad 应用程序中实现“日历”视图,就像 iPad 设备的默认日历一样