2016-02-01 3 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

Эффект прокрутки, который вы хотите достичь, может быть выполнен с помощью UIScrollView или с помощью UICollectionView.

Если вы хотите реализовать какую-то сетку с несколькими пользовательскими представлениями, лучше использовать UICollectionView, потому что настройка макета UIScrollView может быть очень сложной.

Вы можете найти объяснение относительно того, как настроить UICollectionView здесь: Setting Up a UICollectionView in iOS. Его API похож на UITableView, но он может прокручивать как по горизонтали, так и по вертикали. Просто добавьте свои кнопки внутри UICollectionViewCells, как вы это сделали бы с UITableViewCell.

Смежные вопросы