2016-02-01 95 views
-3

我想知道如何創建一排可以左右滑動的按鈕。例如在「剪下繩子」中,您可以左右滑動以找到您想要的框。我將如何實現這一點,並且能夠在稍後添加更多按鈕?在iOS中製作滑動視圖

回答

0

您可以使用此代碼。

class ViewController: UIViewController { 

    @IBOutlet weak var categoryScrollView: UIScrollView! 
    var categoryArr = ["Button1","Button2","Button3","Button4","Button5"] 
    var buttonColors = [UIColor.greenColor(), UIColor.blueColor(), UIColor.blackColor(), UIColor.cyanColor(), UIColor.magentaColor()] 
    let kPadding:CGFloat = 10 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     let buttonSize = CGSizeMake(categoryScrollView.bounds.size.width/2, categoryScrollView.bounds.size.height/2)//hal 

     let scrollingView = colorButtonsView(buttonSize, buttonCount: 5) 
     categoryScrollView.contentSize = scrollingView.frame.size 
     categoryScrollView.addSubview(scrollingView) 
     categoryScrollView.showsVerticalScrollIndicator = false 
     categoryScrollView.delegate = self 
     categoryScrollView.pagingEnabled = true 
     categoryScrollView.indicatorStyle = .Default 
     categoryScrollView.contentOffset = CGPointMake(0, 0) 
    } 


    func colorButtonsView(buttonSize:CGSize, buttonCount:Int) -> UIView { 
     let buttonView = UIView() 
     buttonView.frame.origin = CGPointMake(0,0) 
     let padding = CGSizeMake(kPadding, kPadding) 
     buttonView.frame.size.width = (buttonSize.width + padding.width) * CGFloat(buttonCount) 
     var buttonPosition = CGPointMake(0, padding.height) 
     let buttonIncrement = buttonSize.width + padding.width 
     for i in 0...(buttonCount - 1) { 
      let button = UIButton(type: .Custom) 
      button.frame.size = buttonSize 
      button.frame.origin = buttonPosition 
      buttonPosition.x = buttonPosition.x + buttonIncrement 
      button.setTitle(categoryArr[i], forState: UIControlState.Normal) 
      button.backgroundColor = buttonColors[i] 
      buttonView.addSubview(button) 
     } 
     buttonView.backgroundColor = UIColor.redColor() 
     return buttonView 
    } 
} 
extension ViewController:UIScrollViewDelegate{ 
    func scrollViewDidEndDecelerating(scrollView: UIScrollView) { 

     let index = round(scrollView.contentOffset.x/scrollView.frame.size.width) 
     print(index) 
    } 
} 
+0

請詳細說明該代碼如何回答問題。 – JAL

+0

這段代碼允許我製作按鈕,這是我想要的。 –

+0

尼克希望有一個滾動視圖,滾動的每個頁面都包含一個按鈕。所以基本上你創建一個滾動視圖,然後使用框架寬度(不是內容寬度)作爲滾動的一頁。然後創建一個視圖,該視圖等於每個按鈕的大小乘以每個按鈕的按鈕數+填充並將其放置在滾動視圖中。您將每個按鈕添加爲該父視圖的子視圖。當爲滾動視圖啓用分頁時,滾動視圖將每頁滾動一次,並在滑動時將每個按鈕都帶入滾動視圖框架。 –

0

要實現的滾動效果可以使用UIScrollViewUICollectionView來完成。

如果要實現某種具有多個自定義視圖的網格,最好使用UICollectionView,因爲配置UIScrollView的佈局會非常棘手。

你可以在這裏找到一些關於如何設置UICollectionView的說明:Setting Up a UICollectionView in iOS。 它的API類似於UITableView,但它可以水平和垂直滾動。與UITableViewCell一樣,只需在UICollectionViewCells內添加按鈕即可。