2014-06-23 27 views
1

使用界面生成器,我將UIScrollView拖出到我的ImageViewController上。如何使用Swift爲故事板生成的UIScrollView創建一個setter?

我控制從ScrollView拖動到我的ImageViewController以獲得一個IBOutlet來控制scrollView。其中添加了代碼:

@IBOutlet var scrollView : UIScrollView 

現在我想在scrollView權利初始化後設置一個屬性。

在Objective C中,你會寫這個函數來實現它:

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

這將設置contentSize它已被初始化後立即滾動視圖。

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

然後,而不是使用此代碼在viewDidLoad中:

self.scrollView.addSubview(self.imageView) 

斯威夫特

目前,我用get函數像這樣包裝一個新的變種內self.scrollView實現類似的功能

我用這個:

self.sgScrollView.addSubview(self.imageView) 

哪個時可以獲得設置內容大小調整scrollView。

但在客觀的C教程中,我跟着他們設置了scrollView的內容大小,就像上面的obj-c函數一樣,它已經被初始化和設置了。我如何使用Swift來做到這一點?

回答

3

這將是一個偉大的地方使用斯威夫特的財產觀察員。您可以在班級中的任何屬性上定義willSetdidSet觀察員。你會想要一個didSet這個觀察員:

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

    ... 
} 
+0

謝謝,偉大的作品 – nearpoint

相關問題