- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将 swift 转换为 objective-C。下面是我的代码:
swift
import UIKit
protocol TraitCollectionOverridable {
func preferredTraitCollection() -> UITraitCollection?
}
class CustomNavigationController: UINavigationController {
override func overrideTraitCollectionForChildViewController(childViewController: UIViewController) -> UITraitCollection? {
guard let conformingViewController = childViewController as? TraitCollectionOverridable else {
return super.overrideTraitCollectionForChildViewController(childViewController)
}
return conformingViewController.preferredTraitCollection()
}
}
objective-C 头文件
@protocol TraitCollectionOverridable <NSObject>
- (UITraitCollection *) preferredTraitCollection;
@end
@interface CustomNavigationController : UINavigationController
@property (nonatomic, weak) id <TraitCollectionOverridable> traitsDelegate;
@end
.m 文件
@implementation CustomNavigationController
- (void)viewDidLoad {
[super viewDidLoad];
[self.traitsDelegate preferredTraitCollection];
// Do any additional setup after loading the view.
}
- (UITraitCollection *)overrideTraitCollectionForChildViewController:(UIViewController *)childViewController
{
if (CGRectGetWidth(self.view.bounds) < CGRectGetHeight(self.view.bounds)) {
return [UITraitCollection traitCollectionWithHorizontalSizeClass:UIUserInterfaceSizeClassCompact];
} else {
return [UITraitCollection traitCollectionWithHorizontalSizeClass:UIUserInterfaceSizeClassRegular];
}
}
@end
我的猜测是 overrideTraitCollectionForChildViewController 没有正确转换。任何帮助都会很棒。
最佳答案
My guess is overrideTraitCollectionForChildViewController is not converted properly.
Obj-C 和 Swift 版本的 overrideTraitCollectionForChildViewController
并不等效。这是更正后的代码:
- (UITraitCollection *)overrideTraitCollectionForChildViewController:(UIViewController *)childViewController
{
if( [childViewController conformsToProtocol:@protocol(TraitCollectionOverridable)] ) {
return [(NSObject<TraitCollectionOverridable>*)childViewController preferredTraitCollection];
} else {
return [super overrideTraitCollectionForChildViewController:childViewController];
}
}
override func overrideTraitCollectionForChildViewController(childViewController: UIViewController) -> UITraitCollection? {
guard let conformingViewController = childViewController as? TraitCollectionOverridable else {
return super.overrideTraitCollectionForChildViewController(childViewController)
}
return conformingViewController.preferredTraitCollection()
}
关于ios - UITraitCollection - 快速到 objective-C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31331257/
由于 iOS8 检测 UIViewController 方向的方法已被弃用。 例如 -interfaceOrientation 已弃用,要检测当前 View Controller 的方向,我们似乎需要
我有一个简单的 UITraitCollection 扩展: extension UITraitCollection { var isIpad: Bool { return ho
我试图找出如何以编程方式使用 UITraitCollection,但我发现很难理解它。我正在为 iOS 8 中的 iPad Retina 开发。 println(self.traitCollectio
我应该使用 UITraitCollection 类来更新 Size Class 约束吗?这是更新约束的最佳实践吗? 我已经浏览了 UITraitCollection,但不知道如何区分纵向和横向? 最佳
我正在尝试将我的项目更新为 iOS13。我正在使用UIScrollSlidingPages我的应用程序项目中的库。 我把这个库放在我的 UIViewController 中,如下所示。我将自定义 Vi
我正在尝试将 swift 转换为 objective-C。下面是我的代码: swift import UIKit protocol TraitCollectionOverridable { f
我正在使用 UISplitViewController 设计一个 iPad 应用程序.我已经配置了 UISplitViewController这样主视图 Controller (即左侧较细的 View
我有一个在通用 iOS 应用程序中呈现的 View Controller 。在 iPhone 上,它使用自定义 UIPresentationController 显示,该 Controller 使用
UITraitEnvironment 的文件说: This method is called automatically when the current trait collection chang
我有一个 UITextView 设置为显示不同的属性字符串,具体取决于所使用的设备。但是,一旦我使用特征,setText: 就不再起作用了。 我也不知道这两个文本的信息存储在哪里。当我查看 Story
在我的应用程序中,当 iOS 系统暗模式设置发生变化时,我需要进行一些自定义 UI 更改。根据https://developer.apple.com/videos/play/wwdc2019/214/
我是一名优秀的程序员,十分优秀!