我有一个在 Xamarin.iOS(C#、Monotouch)中开发的 iOS 应用程序,其中主要 UI 不是基于 Storyboard的。 (我这样做是因为我的应用程序在纵向和横向方向上需要结构不同的布局,以编程方式实现这一点比通过 IB 和 Storyboard要容易得多。)
我的问题是,我现在正尝试使用 Storyboard 来开发一个简单的对话框,但是当我实例化该对话框时,结构就在那里,但没有应用在 Interface Builder 中定义的样式元素。我读过的所有内容似乎都表明这应该发生。这尤其成问题,因为大多数样式元素在界面初始化后无法修改。
这是我进行实例化的代码:
UIStoryboard sb = UIStoryboard.FromName("StoryboardAppSettings", null);
var vc = sb.InstantiateViewController("TableViewControllerAppSettings");
UIViewController settingsVC = vc as UIViewController;
PresentViewController(settingsVC, true, null);
我已经定义了一个要“分组”的 UITableView,但它没有。我有两个 UISwitch 元素,其中定义了未应用的颜色。我有一些按钮的色调没有被应用。
(如果我设置一个断点并深入查看 View Controller 数据结构,我发现所有这些参数都设置正确......当实现层次结构时它们似乎被忽略了。)
我做错了什么?
最佳答案
我发现问题出在我设置 UIView.Appearance.BackgroundColor 上。似乎当您这样做时,UIView.Appearance.BackgroundColor 总是会覆盖 UISwitch.OnTintColor。 (在我看来,这是一个错误,可能在 iOS 中,但我可能误解了 Appearance API 应该如何工作。我的期望是可以在更具体的级别(后代 View )覆盖通用的全局设置(如 UIView.Appearance)或特定的实例化),我相信这是它适用于大多数其他外观属性的方式。UISwitch.OnTintColor(以及 UISwitch.TintColor 和 UISwitch.BackgroundColor,但不是 UISwitch.ThumbTintColor)似乎是异常(exception)(因此是错误), 不是规则。
关于ios - 从 Storyboard 实例化时,未应用 Interface Builder 中定义的样式元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20826693/