2016-07-29 42 views
2

我认为这是很容易,但我不能实现这一点。 在swift中,扩展可以添加方法或其他任何东西,但不能添加存储的属性? 也许您需要添加新课程或其他内容,但我不知道如何执行此操作。 有什么帮助吗?提前致谢。我想扩展为uiview存储财产在迅速

回答

1

如果你想自定义视图,您可以执行以下操作:

1 - 创建一个快捷和xib文件,都具有相同的名称。

2 - 在Interface Builder上,将文件的所有者设置为swift文件的类。

3 - 添加以下代码到视图的生命周期方法:

import UIKit 

class View: UIView { 
    // YOUR PROPERTIES AND OUTLETS HERE ie. 
    var nameLabel :UILabel? 
    @IBOutlet weak var label: UILabel! 

    required init?(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder) 
     setup() 
    } 

    override init(frame: CGRect) { 
     super.init(frame: frame) 
     setup() 
    } 

    func setup() { 
     let object = NSStringFromClass(self.dynamicType) as NSString 
     let customNibName = object.componentsSeparatedByString(".").last! 
     let v = NSBundle.mainBundle().loadNibNamed(customNibName, owner: self, options: nil).first as? UIView 
     addSubview(v!) 
     v?.frame = self.bounds 
    } 
} 
+0

我可以在没有Xib和界面构建器的情况下执行此操作吗? – hanachan1026

+0

是的!只是UIView的子类,您可以使用自定义属性创建自定义视图。很简单。你也可以使用代码添加你的元素,看看https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/AutolayoutPG/VisualFormatLanguage.html – IuryPainelli

1

你可以做到这一点 全球:

import UIKit 
let screenWidth = UIScreen.mainScreen().bounds.size.width 
class Macro: NSObject { 
} 

本地地产:

lazy var screenWidth : CGFloat = { 
    let temp = UIScreen.mainScreen().bounds.size.width 
    return temp 
}() 
+0

您在使用这个扩展的代码? – hanachan1026