2017-06-01 162 views
0

我試圖在我的程序中實現一個自定義的UISegmented控件。有沒有一種方法可以和CGRect一起使用Auto Layout(沒有大量佈局衝突)或者完全擺脫它? 下面是我用來創建分段控件的特定實例的代碼。幀初始化器是必需的。在框架初始化器中使用自動佈局

let seg = YSSegmentedControl(
     frame: CGRect(
      x: 0, 
      y: 0, 
      width: 0, 
      height: 0), 
     titles: [ 
      "First", 
      "Second", 
      "Third" 
     ], 
     action: { 
      control, index in 
      print ("segmented did pressed \(index)") 
     }) 

    seg.delegate = self 
    view.addSubview(seg) 
} 

}

感謝, 尼克

+0

說到我自己,當我使用自動佈局 - 實際上已經是「始終」 - 我通常在可能的時候使用空初始化器,並且當指定的初始化器需要一個幀CGREct.zero。在你的情況下,我會用這個替換明確的框架 - 它使你的意圖更清晰。然後我會根據您的需要給它一個高度/寬度佈局以及放置位置。 – dfd

+0

這工作很好。不幸的是,YSSegmentedControl不會除了一個空的初始化器,所以我必須去CGRect.zero根。我曾經嘗試過,但只包括位置錨,而不包括高度寬錨。在我添加了高度和寬度的錨點之後,它就起作用了! –

回答

0

您應該使用或框架佈局構造是舊的風格,或使用限制。 我不相信這個類沒有標準的YSSegmentedControl()初始值設定項。