2016-06-19 5 views
0

Я пытаюсь сделать кнопку заполнять ширину scrollview программно. Я также сделал кнопку программно. scrollView.width не работает, что бы я использовал для ширины scrollView? Благодарю.Как заполнить scrollview ширину программно

class ViewController: UIViewController { 

    @IBOutlet weak var scrollView: UIScrollView! 
    let screenSize: CGRect = UIScreen.mainScreen().bounds 

    let btn1 = UIButton(frame: CGRect(x: 100, y: 100, width:200, height: 50)) 



    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 

     btn1.backgroundColor = UIColor.clearColor() 
     btn1.layer.cornerRadius = 5 
     btn1.layer.borderWidth = 1 
     btn1.layer.borderColor = UIColor.redColor().CGColor 

     btn1.setTitle("1", forState: .Normal) 


     scrollView.addSubview(btn1) 


    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 


} 
+0

попробовать 'scrollView.frame.size.width' –

ответ

0

Вы можете сделать это

class ViewController: UIViewController { 

    @IBOutlet weak var scrollView: UIScrollView! 
    let screenSize: CGRect = UIScreen.mainScreen().bounds 

    let btn1 = UIButton(frame: CGRect(x: 100, y: 100, width:200, height: 50)) 



    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 

     btn1.backgroundColor = UIColor.clearColor() 
     btn1.layer.cornerRadius = 5 
     btn1.layer.borderWidth = 1 
     btn1.layer.borderColor = UIColor.redColor().CGColor 

     btn1.setTitle("1", forState: .Normal) 

     scrollView.addSubview(btn1) 

    } 

    // Add this 
    override func viewDidLayoutSubviews() { 
     super.viewDidLayoutSubviews() 

     let newFrame = btn1.frame 
     newFrame.size.width = scrollView.bounds.width 
     btn1.frame = newFrame 
    } 

}

Наилучшая практика

Чтобы получить или установить размер (ширина или высота) использование "границы" вместо "кадра"

Для получения оригинала (x или y) используйте «рамку»

Чтобы установить или анимировать начало координат (x или y), используйте «центр» вместо «рамки»

Значение в средстве центра всегда справедливо, даже если коэффициенты масштабирования или поворота были добавлены к преобразованию вида , То же самое не относится к значению в свойстве frame, которое считается недопустимым, если преобразование представления не равно преобразованию идентичности.

0

Два варианта: -

  1. Вы можете программно задать autolayout ограничений. Просто выровняйте левое поле и правое поле кнопки с прокруткой.

  2. В viewDidLayoutSubviews метод, вы можете установить btn1.frame.size.width = self.tableview.contentSize.width

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