2017-11-04 11 views
0

に私のすべてのビューを追加する方法を見つける**これは私がプログラムでUIを作った私のコードですが、私はそれができるようにスクロールさせることができないのです**カントUIScrollViewのプログラム

ここでは、私が試してみました私のコードです多くの方法は、プログラムでスクロールビューを追加しますが、それはplzは助けて働いていなかった

var cityname_EN: String? 
var cityname_DE: String? 
var country: String? 
var text_EN: String? 
var text_DE: String? 

var scrollView: UIScrollView! 
var imageView: UIImageView! 

let labelOne: UILabel = { 
let label = UILabel() 
label.text = "Scroll Top" 
label.backgroundColor = .red 
label.translatesAutoresizingMaskIntoConstraints = false 
return label 
}() 

let labelTwo: UILabel = { 
    let label = UILabel() 
    label.text = "Scroll Bottom" 
    label.backgroundColor = .green 
    label.translatesAutoresizingMaskIntoConstraints = false 
    return label 
}() 



let allImageView: UIImageView = { 
    let imageView = UIImageView(image: #imageLiteral(resourceName: "all")) 
    imageView.translatesAutoresizingMaskIntoConstraints = false 
    imageView.contentMode = .scaleAspectFit 
    return imageView 
}() 


let citynameELable:UILabel = { 

    let citynameELable = UILabel() 


    citynameELable.textColor = UIColor.darkText 
    citynameELable.textAlignment = .center 
    citynameELable.font = UIFont.boldSystemFont(ofSize: 18) 
    citynameELable.translatesAutoresizingMaskIntoConstraints = false 

    return citynameELable 

}() 

let countryLable:UILabel = { 

    let countryLable = UILabel() 


    countryLable.textColor = UIColor.darkText 
    countryLable.textAlignment = .center 
    countryLable.font = UIFont.boldSystemFont(ofSize: 18) 
    countryLable.translatesAutoresizingMaskIntoConstraints = false 

    return countryLable 

}() 


let textELable: UITextView = { 

    let textELable = UITextView() 
    textELable.translatesAutoresizingMaskIntoConstraints = false 
    textELable.textAlignment = .center 
    textELable.font = UIFont.boldSystemFont(ofSize: 12) 
    textELable.isEditable = false 
    textELable.isScrollEnabled = false 
    return textELable 
}() 


override func viewDidLoad() { 
    super.viewDidLoad() 

    view.backgroundColor = UIColor.white 
    setupNavigation() 
setupLayout() 


} 




func setupNavigation(){ 

    navigationItem.title = "Map View" 
    navigationController?.navigationBar.prefersLargeTitles = true 
    navigationItem.hidesSearchBarWhenScrolling = false 

    navigationController?.navigationBar.largeTitleTextAttributes = 
     [NSAttributedStringKey.foregroundColor: UIColor.gray, 
     NSAttributedStringKey.font: UIFont(name: "Arial", size: 30) ?? 
      UIFont.systemFont(ofSize: 30)] 

} 



private func setupLayout() 
{ 

    view.addSubview(countryLable) 
    view.addSubview(citynameELable) 
    view.addSubview(textELable) 

    citynameELable.text = cityname_EN 
    countryLable.text = country 

    textELable.text = text_EN 

    let topMapBokContainerView = UIView() 
    topMapBokContainerView.backgroundColor = UIColor.red 

    topMapBokContainerView.translatesAutoresizingMaskIntoConstraints = false 

    let mySegmentedControl = UISegmentedControl (items: ["English","DE"]) 




    mySegmentedControl.translatesAutoresizingMaskIntoConstraints = false 

    mySegmentedControl.accessibilityActivate() 

    mySegmentedControl.isEnabledForSegment(at: 0) 

    mySegmentedControl.selectedSegmentIndex = 0 

    // Add function to handle Value Changed events 
    mySegmentedControl.addTarget(self, action: #selector(self.segmentedValueChanged(_:)), for: .valueChanged) 




    let bottomControlsStackView = UIStackView(arrangedSubviews: [citynameELable,countryLable]) 
    bottomControlsStackView.backgroundColor = UIColor.blue 
    bottomControlsStackView.translatesAutoresizingMaskIntoConstraints = false 
    bottomControlsStackView.distribution = .fillEqually 





    view.addSubview(topMapBokContainerView) 




    topMapBokContainerView.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor).isActive = true 
    topMapBokContainerView.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor).isActive = true 
    topMapBokContainerView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor).isActive = true 
    topMapBokContainerView.heightAnchor.constraint(equalTo: view.heightAnchor, multiplier: 0.5).isActive = true 



    topMapBokContainerView.addSubview(allImageView) 


    allImageView.centerXAnchor.constraint(equalTo: topMapBokContainerView.centerXAnchor).isActive = true 
    allImageView.centerYAnchor.constraint(equalTo: topMapBokContainerView.centerYAnchor).isActive = true 
    allImageView.heightAnchor.constraint(equalTo: topMapBokContainerView.heightAnchor, multiplier: 0.5).isActive = true 



    self.view.addSubview(mySegmentedControl) 
    NSLayoutConstraint.activate([ 
     mySegmentedControl.topAnchor.constraint(equalTo: topMapBokContainerView.safeAreaLayoutGuide.bottomAnchor, constant: 10), 

     mySegmentedControl.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor, constant: 10), 
     mySegmentedControl.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor, constant: -10), 
     mySegmentedControl.heightAnchor.constraint(equalToConstant: 30) 

     ]) 

    view.addSubview(bottomControlsStackView) 

    NSLayoutConstraint.activate([ 
     bottomControlsStackView.topAnchor.constraint(equalTo: mySegmentedControl.safeAreaLayoutGuide.bottomAnchor, constant: 10), 

     bottomControlsStackView.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor, constant: 10), 
     bottomControlsStackView.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor, constant: -10), 
     bottomControlsStackView.heightAnchor.constraint(equalToConstant: 50) 

     ]) 

    view.addSubview(textELable) 

    textELable.topAnchor.constraint(equalTo: bottomControlsStackView.safeAreaLayoutGuide.bottomAnchor).isActive = true 
    textELable.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor, constant: 10).isActive = true 
    textELable.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor, constant: -10).isActive = true 
    textELable.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: 0).isActive = true 


} 

@objc func segmentedValueChanged(_ sender:UISegmentedControl!) 
{ 

    if sender.selectedSegmentIndex == 0 { 

     citynameELable.text = cityname_EN 
     textELable.text = text_EN 
    } 
    else if sender.selectedSegmentIndex == 1 { 

     citynameELable.text = cityname_DE 
     textELable.text = text_DE 

    } 


} 





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

}

私はview.addSubView(MyViews Here)

のようにスクロールビューに追加しようとしまし作成したすべてのビュー

Here is the screen shot of my app

+0

scrollViewに追加する場合は、各ビューのオフセットをxまたはyに設定する必要があります。私はそれがスクロールビューに追加されていない理由だと思います –

+0

セットの表示を許可しましょう –

答えて

0
  1. セットトップ制約、ボトム、先頭とスーパー
  2. スーパービューは、コンテンツビューを作成し、トップ制約を設定スクロールビュー(view.addSubview(scrollView))
  3. を追加参照ScrollViewに末尾、ボトム、先頭と
  4. はコンテンツビュー内の要素を設定してスクロール表示が
  5. ScrollView(scrollView.addSubview(contentView))へのコンテンツのビューを追加の参照コンテンツビューに後続
+0

これらのメソッドを試しましたが、スクロールビューの内容はスクロールしません。 –

+0

コードを投稿できますか?私にそれを確認させてください。 –

0

あなたの質問によると、あなたのビューの階層は次のようになります。

ビュー - > scrollView - > allYourViews

だから、あなたはあなたのscrollViewは、ビューと同じフレームに設定することができます

view.addSubView(scrollView) 
scrollView.addSubView(yourViews Here)