首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将这个目标c traitCollection翻译成swift?

如何将这个目标c traitCollection翻译成swift?
EN

Stack Overflow用户
提问于 2015-07-07 19:59:57
回答 1查看 1.4K关注 0票数 2

我试图将目标C中的代码从这个链接( Sizing class for iPad portrait and Landscape Modes )中翻译出来

下面是我要翻译的代码:

代码语言:javascript
复制
@interface RDTraitCollectionOverrideViewController : UIViewController {
BOOL _willTransitionToPortrait;
UITraitCollection *_traitCollection_CompactRegular;
UITraitCollection *_traitCollection_AnyAny;
}

@end

@implementation RDTraitCollectionOverrideViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    [self setUpReferenceSizeClasses];
}

- (void)setUpReferenceSizeClasses {
    UITraitCollection *traitCollection_hCompact = [UITraitCollection traitCollectionWithHorizontalSizeClass:UIUserInterfaceSizeClassCompact];
UITraitCollection *traitCollection_vRegular = [UITraitCollection traitCollectionWithVerticalSizeClass:UIUserInterfaceSizeClassRegular];
_traitCollection_CompactRegular = [UITraitCollection traitCollectionWithTraitsFromCollections:@[traitCollection_hCompact, traitCollection_vRegular]];

UITraitCollection *traitCollection_hAny = [UITraitCollection traitCollectionWithHorizontalSizeClass:UIUserInterfaceSizeClassUnspecified];
UITraitCollection *traitCollection_vAny = [UITraitCollection traitCollectionWithVerticalSizeClass:UIUserInterfaceSizeClassUnspecified];
_traitCollection_AnyAny = [UITraitCollection traitCollectionWithTraitsFromCollections:@[traitCollection_hAny, traitCollection_vAny]];
}

-(void)viewWillAppear:(BOOL)animated {
_willTransitionToPortrait = self.view.frame.size.height > self.view.frame.size.width;
}

- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator {
_willTransitionToPortrait = size.height > size.width;
}

-(UITraitCollection *)overrideTraitCollectionForChildViewController:(UIViewController *)childViewController {
UITraitCollection *traitCollectionForOverride =           (_willTransitionToPortrait) ? _traitCollection_CompactRegular :    _traitCollection_AnyAny;
return traitCollectionForOverride;
}
@end

下面是我所拥有的,请记住,我在类声明下面重命名了一些inital变量:

代码语言:javascript
复制
import UIKit

class ViewController: UIViewController {

var willTransitionToPortrait:Bool = false
var compactRegular = UITraitCollection()
var anyAny = UITraitCollection()

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
    setUpReferenceSizeClasses()
}

func setUpReferenceSizeClasses() {

    var traitCollection_hCompact = UITraitCollection(horizontalSizeClass: UIUserInterfaceSizeClass.Compact)
    var traitCollection_vRegular = UITraitCollection(verticalSizeClass: UIUserInterfaceSizeClass.Regular)
    compactRegular = UITraitCollection(traitsFromCollections: [traitCollection_hCompact, traitCollection_vRegular])

    var traitCollection_hAny = UITraitCollection(horizontalSizeClass: UIUserInterfaceSizeClass.Unspecified)
    var traitCollection_vAny = UITraitCollection(verticalSizeClass: UIUserInterfaceSizeClass.Unspecified)
    anyAny = UITraitCollection(traitsFromCollections: [traitCollection_hAny, traitCollection_vAny])
}

override func viewWillAppear(animated: Bool) {

    willTransitionToPortrait = self.view.frame.size.height > self.view.frame.size.width
}

override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) {

    willTransitionToPortrait = size.height > size.width
}


func overrideTraitCollectionForChildViewController(UIViewController) -> childViewController {

    var traitCollectionForOverride = (willTransitionToPortrait) ? compactRegular : anyAny

    return traitCollectionForOverride;
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

}

我想我几乎都有了,除了最后一个函数,我不知道它是什么意思。任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-07 20:07:22

我认为您在最后一个函数中缺少了“覆盖”,尝试用下面的代码替换:

代码语言:javascript
复制
override func overrideTraitCollectionForChildViewController(childViewController: UIViewController) -> UITraitCollection! {
    //
}

以下是完整的代码:

代码语言:javascript
复制
import UIKit

class ViewController: UIViewController {
    
    var willTransitionToPortrait:Bool = false
    var compactRegular = UITraitCollection()
    var anyAny = UITraitCollection()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        setUpReferenceSizeClasses()
    }
    
    func setUpReferenceSizeClasses() {
        
        var traitCollection_hCompact = UITraitCollection(horizontalSizeClass: UIUserInterfaceSizeClass.Compact)
        var traitCollection_vRegular = UITraitCollection(verticalSizeClass: UIUserInterfaceSizeClass.Regular)
        compactRegular = UITraitCollection(traitsFromCollections: [traitCollection_hCompact, traitCollection_vRegular])
        
        var traitCollection_hAny = UITraitCollection(horizontalSizeClass: UIUserInterfaceSizeClass.Unspecified)
        var traitCollection_vAny = UITraitCollection(verticalSizeClass: UIUserInterfaceSizeClass.Unspecified)
        anyAny = UITraitCollection(traitsFromCollections: [traitCollection_hAny, traitCollection_vAny])
    }
    
    override func viewWillAppear(animated: Bool) {
        
        willTransitionToPortrait = self.view.frame.size.height > self.view.frame.size.width
    }
    
    override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) {
        
        willTransitionToPortrait = size.height > size.width
    }
    
    override func overrideTraitCollectionForChildViewController(childViewController: UIViewController) -> UITraitCollection! {
    //
        var traitCollectionForOverride = (willTransitionToPortrait) ? compactRegular : anyAny
        
        return traitCollectionForOverride;
    }
    
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
}

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31278185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档