2016-08-10 3 views
0

У меня есть экран iPad:Swift iPad - кнопки не работают

1) Кнопки не меняются при изменении их положения. 2) Круговое изображение кнопки растягивается.

Мне нужно создать набор кнопок, указанный на приведенном ниже экране.

My screen

Я использую следующий код для создания кнопки набора.

class MyCommonViewController: UIViewController { 

    var button: UIButton? 
    var Circularbutton: UIButton? 

override func viewDidLoad() { 
     super.viewDidLoad() 

     var xMargin:CGFloat = 20.0 
     var yTopMargin:CGFloat = 40.0 
     var CircularBtnxMargin:CGFloat = 180.0 
     var CircularBtnyTopMargin:CGFloat = 200.0 

     var i = 1  

     let TextArray = ["Button 1", "Button 2", "Button 3", "Button 4", "Button 5", "Button 6"] 

     for index in 1...6 
     { 
      button = UIButton() 
      button?.tag=index 
      var buttonFrame = self.view.frame 
      buttonFrame.origin.x += xMargin 
      buttonFrame.origin.y += yTopMargin 
      buttonFrame.size.width = 200 
      buttonFrame.size.height = 200 

      button?.frame = buttonFrame 
      button?.layer.cornerRadius = 15.0    
      button?.layer.zPosition = 10 

      button?.backgroundColor = UIColor.lightGrayColor()    

      button?.setTitle(TextArray[index-1], forState: UIControlState.Normal)    
      button?.addTarget(self, action: #selector(MyCommonViewController.BigButtonTouched), forControlEvents: UIControlEvents.TouchUpInside) 

      self.view.addSubview(button!) 


      Circularbutton = UIButton() 
      var CbuttonFrame = self.view.frame   

      CbuttonFrame.origin = CGPoint(x:CircularBtnxMargin, y:CircularBtnyTopMargin) 
      CbuttonFrame.size.width = 50 
      CbuttonFrame.size.height = 50   

      Circularbutton?.frame = CbuttonFrame 


      Circularbutton?.tag=index 
      Circularbutton?.layer.zPosition = 100 


      let image = UIImage(named: "que2.png") as UIImage? 
      Circularbutton?.setImage(image, forState: UIControlState.Normal) 
      Circularbutton?.addTarget(self, action: #selector(MyCommonViewController.questionButtonPressed), forControlEvents: UIControlEvents.TouchUpInside) 


      self.view.addSubview(Circularbutton!) 

      xMargin+=250.0 
      CircularBtnxMargin+=250.0 
      i+=1 

      if(i > 3) 
      { 
       yTopMargin+=300.0 
       xMargin=20.0 
       CircularBtnyTopMargin+=300.0 
       CircularBtnxMargin=180.0 
       i=1 
      } 
     } 

    } 

} 

1) Но кнопки с вопросительным знаком не могут быть изменены, за исключением исходных двух кнопок.

2) Моя вторая проблема заключается в том, что изображение на круговой кнопке показывает грубую неровную границу.

Можете ли вы мне помочь?

Edit:

func questionButtonPressed(sender:UIButton!) { 

let btn:UIButton = sender 

print("Circular Button Pressed - \(btn.tag)") 
} 


func BigButtonTouched(sender:UIButton!) { 

let bigBtn:UIButton = sender 

print("Button Pressed - \(bigBtn.tag)") 

} 
+0

для индекса в 1 ... 6. Я думаю, вам нужно зацикливаться от 0 до 5, поскольку это индекс массива. – Almazini

+0

Можете ли вы поделиться контентом: questionButtonPressed func? –

+0

@ RoyK - добавлен код функции в вопросах для вопросаButtonPressed и BigButtonTouched. – dang

ответ

0

Объявить кнопки на каждой итерации для цикла, а не снаружи для цикла. См. Код (вам необходимо удалить все принудительные разворачивания):

class MyCommonViewController: UIViewController { 

override func viewDidLoad() { 
     super.viewDidLoad() 

     var xMargin:CGFloat = 20.0 
     var yTopMargin:CGFloat = 40.0 
     var CircularBtnxMargin:CGFloat = 180.0 
     var CircularBtnyTopMargin:CGFloat = 200.0 

     var i = 1  

     let TextArray = ["Button 1", "Button 2", "Button 3", "Button 4", "Button 5", "Button 6"] 

     for index in 1...6 
     { 
      let button = UIButton() 
      button?.tag=index 
      var buttonFrame = self.view.frame 
      buttonFrame.origin.x += xMargin 
      buttonFrame.origin.y += yTopMargin 
      buttonFrame.size.width = 200 
      buttonFrame.size.height = 200 

      button?.frame = buttonFrame 
      button?.layer.cornerRadius = 15.0    
      button?.layer.zPosition = 10 

      button?.backgroundColor = UIColor.lightGrayColor()    

      button?.setTitle(TextArray[index-1], forState: UIControlState.Normal)    
      button?.addTarget(self, action: #selector(MyCommonViewController.BigButtonTouched), forControlEvents: UIControlEvents.TouchUpInside) 

      self.view.addSubview(button!) 


      let Circularbutton = UIButton() 
      var CbuttonFrame = self.view.frame   

      CbuttonFrame.origin = CGPoint(x:CircularBtnxMargin, y:CircularBtnyTopMargin) 
      CbuttonFrame.size.width = 50 
      CbuttonFrame.size.height = 50   

      Circularbutton?.frame = CbuttonFrame 


      Circularbutton?.tag=index 
      Circularbutton?.layer.zPosition = 100 


      let image = UIImage(named: "que2.png") as UIImage? 
      Circularbutton?.setImage(image, forState: UIControlState.Normal) 
      Circularbutton?.addTarget(self, action: #selector(MyCommonViewController.questionButtonPressed), forControlEvents: UIControlEvents.TouchUpInside) 


      self.view.addSubview(Circularbutton!) 

      xMargin+=250.0 
      CircularBtnxMargin+=250.0 
      i+=1 

      if(i > 3) 
      { 
       yTopMargin+=300.0 
       xMargin=20.0 
       CircularBtnyTopMargin+=300.0 
       CircularBtnxMargin=180.0 
       i=1 
      } 
     } 

    } 

} 
+0

Я пробовал объявлять кнопки на каждой итерации цикла for, но все равно не имеет никакого эффекта. Круглые кнопки, кроме стартовых, не могут быть интерактивными – dang

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