【问题标题】:How do I use iOS7 controls without upgrading your nib files?如何在不升级 nib 文件的情况下使用 iOS7 控件?
【发布时间】:2013-10-01 20:34:00
【问题描述】:

此时我想保持我的代码与 Xcode 4 兼容,因此我不想升级我的 nib 文件。

但是,如果不升级 nib 文件,我无法更改 UISegmentedControl 控件的色调颜色并使用新的 iOS7 版本的控件。

我见过..

[NSUserDefaults standardUserDefaults] setObject:@Yes forKey@"UIUseLegacyUID"]

哪个会保留iOS6的布局,我不确定是否有未来的版本或者这是否会有所帮助?

【问题讨论】:

  • 我在这里找到了答案...stackoverflow.com/questions/12773400/…
  • 令人着迷。这对我来说似乎是一个错误。您能否就此向 Apple 提交错误报告?
  • 我听说苹果正在尝试标准化跨视图的控件。但是,此修复程序最初适用于 iOS5,因为它不适用于 iOS6。所以我认为他们可能已经改变了在新控件中应该如何工作。

标签: ios objective-c xcode ios7


【解决方案1】:

使用 Xcode 5,您可以更改您的 XIB 以使用 Xcode 4 和 iOS 6 的属性。

默认情况下你有:

但是,您可以更改 Xcode 4.6 和 iOS 6 的属性:

【讨论】:

  • 是的,我知道怎么做,但是这样做不允许我访问 iOS7 版本的分段控件。
【解决方案2】:

您可以像这样在代码中更改色调颜色:

UISegmentedControl *segmentedControl = ...;
// For backwards compatibility
if ([segmentedControl respondsToSelector:@selector(tintColor)])
{
    segmentedControl.tintColor = [UIColor redColor];
}

【讨论】:

  • 是的,但它在 iOS7 上不起作用,除非您使用升级的 nib 控件。
【解决方案3】:

您可以为每个片段设置不同的片段图像和颜色。您可以使用的颜色:

//get the subviews of the segmentedcontrol

NSArray *arri = [segmentedControl subviews];

//change the color of every subview(segment) you have

[[arri objectAtIndex:0] setTintColor:[UIColor redColor]];

[[arri objectAtIndex:1] setTintColor:[UIColor greenColor]];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-15
    • 2011-04-09
    • 1970-01-01
    • 2023-03-21
    • 2011-07-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多