【问题标题】:How can I create a setter for a UIScrollView generated from the storyboard using Swift?如何为使用 Swift 从情节提要生成的 UIScrollView 创建设置器?
【发布时间】:2014-06-23 03:28:30
【问题描述】:

使用界面生成器,我将 UIScrollView 拖到 ImageViewController 上。

我将控件从 ScrollView 拖到 ImageViewController 上,以获取 IBOutlet 来控制 scrollView。其中添加了代码:

@IBOutlet var scrollView : UIScrollView

现在我想在 scrollView 初始化后立即为其设置一个属性。

在目标 C 中,你可以编写这个函数来实现它:

-(void)setScrollView:(UIScrollView *)scrollView
{
  _scrollView = scrollView
  self.scrollView.contentSize = self.image ? self.image.size : CGSizeZero;
}

这将在滚动视图初始化后立即设置它的 contentSize。

目前在 Swift 中,我通过将 self.scrollView 包装在一个带有 get 函数的新 var 中来实现类似的功能:

var sgScrollView: UIScrollView
{
    get {
        self.scrollView.contentSize = self.image!.size
        return self.scrollView!
    }
}

那么不要在 viewDidLoad 中使用这段代码:

self.scrollView.addSubview(self.imageView)

我用这个:

self.sgScrollView.addSubview(self.imageView)

获取滚动视图时设置内容大小。

但是在我关注的 Objective C 教程中,他们在 scrollView 初始化和设置后立即设置它的内容大小,就像上面的 obj-c 函数一样。我怎样才能使用 Swift 做到这一点?

【问题讨论】:

    标签: ios uiscrollview swift xcode6


    【解决方案1】:

    这将是使用 Swift 的属性观察器的好地方。您可以在类中的任何属性上定义 willSetdidSet 观察者。你需要一个didSet 观察者:

    class ImageViewController : ViewController {
        var image : UIImage?
        @IBOutlet var scrollView : UIScrollView {
        didSet {
            self.scrollView.contentSize = self.image?.size ?? CGSizeZero
        }
        }
    
        ...
    }
    

    【讨论】:

      猜你喜欢
      • 2012-10-25
      • 1970-01-01
      • 1970-01-01
      • 2014-02-22
      • 2012-03-21
      • 1970-01-01
      • 2018-12-22
      • 1970-01-01
      相关资源
      最近更新 更多