Use Xib with Scroll View - Swift
I try to use Xib
files with UIScrollView
. I set the constraints (top ,bottom ,leading ,trailing . equal width and height (priority 250)).
I added the xibs
to view that inside of UIScrollView
. And set the last element bottom anchor with greaterThanOrEqualTo
.
But scrollview not scroll . Where is the problem ?
Thanks in advance.
@IBOutlet weak var scrollView: UIScrollView!
@IBOutlet weak var scrollViewSubView: UIView!
var campaignCollectionView:UICollectionView!
var pageControl:UIPageControl!
var winGiftVoucherCode:WinGiftVoucherView!
var lastCallDiscountView : LastCallDiscountView!
var lastCallDiscountView2 : LastCallDiscountView!
var lastCallDiscountView3 : LastCallDiscountView!
override func viewDidLoad() {
super.viewDidLoad()
setupNavigationBarItems()
setCollectionView()
setPageControl()
winGiftVoucherCodeFunc()
lastCallDiscountFunc()
lastCallDiscountFunc2()
lastCallDiscountFunc3()
}
func setCollectionView(){
let layout = UICollectionViewFlowLayout()
layout.scrollDirection = .horizontal
let cCV = UICollectionView(frame: self.view.bounds, collectionViewLayout: layout)
campaignCollectionView = cCV
campaignCollectionView.translatesAutoresizingMaskIntoConstraints = false
self.scrollViewSubView.addSubview(campaignCollectionView)
campaignCollectionView.dataSource = self
campaignCollectionView.delegate = self
campaignCollectionView.backgroundColor = .white
campaignCollectionView.isPagingEnabled = true
campaignCollectionView.isScrollEnabled = true
campaignCollectionView.showsHorizontalScrollIndicator = false
if #available(iOS 11.0, *) {
campaignCollectionView.topAnchor.constraint(equalTo: scrollViewSubView.safeAreaLayoutGuide.topAnchor, constant: 10).isActive = true
} else {
campaignCollectionView.topAnchor.constraint(equalTo: self.scrollViewSubView.topAnchor, constant: 10).isActive = true
}
if #available(iOS 11.0, *) {
campaignCollectionView.heightAnchor.constraint(equalToConstant: 150).isActive = true
// campaignCollectionView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: -10).isActive = true
} else {
campaignCollectionView.heightAnchor.constraint(equalToConstant: 150).isActive = true
// campaignCollectionView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor, constant: -10).isActive = true
}
if #available(iOS 11.0, *) {
campaignCollectionView.leadingAnchor.constraint(equalTo: scrollViewSubView.safeAreaLayoutGuide.leadingAnchor, constant: 10).isActive = true
} else {
campaignCollectionView.leadingAnchor.constraint(equalTo: self.scrollViewSubView.leadingAnchor, constant: 10).isActive = true
}
if #available(iOS 11.0, *) {
campaignCollectionView.trailingAnchor.constraint(equalTo: scrollViewSubView.safeAreaLayoutGuide.trailingAnchor, constant: -10).isActive = true
} else {
campaignCollectionView.trailingAnchor.constraint(equalTo: self.scrollViewSubView.trailingAnchor, constant: -10).isActive = true
}
campaignCollectionView.register(UINib(nibName: "CampaignCollectionViewCell", bundle: nil), forCellWithReuseIdentifier: "CampaignCollectionViewCell")
}
func setPageControl(){
let pC = UIPageControl()
pageControl = pC
pageControl.translatesAutoresizingMaskIntoConstraints = false
self.scrollViewSubView.addSubview(pageControl)
if #available(iOS 11.0, *) {
pageControl.topAnchor.constraint(equalTo: campaignCollectionView.bottomAnchor , constant: 10).isActive = true
} else {
pageControl.topAnchor.constraint(equalTo: campaignCollectionView.bottomAnchor , constant: 10).isActive = true
}
if #available(iOS 11.0, *) {
pageControl.heightAnchor.constraint(equalToConstant: 10).isActive = true
// campaignCollectionView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: -10).isActive = true
} else {
pageControl.heightAnchor.constraint(equalToConstant: 10).isActive = true
// campaignCollectionView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor, constant: -10).isActive = true
}
if #available(iOS 11.0, *) {
pageControl.leadingAnchor.constraint(equalTo: scrollViewSubView.safeAreaLayoutGuide.leadingAnchor, constant: 10).isActive = true
} else {
pageControl.leadingAnchor.constraint(equalTo: self.scrollViewSubView.leadingAnchor, constant: 10).isActive = true
}
if #available(iOS 11.0, *) {
pageControl.trailingAnchor.constraint(equalTo: scrollViewSubView.safeAreaLayoutGuide.trailingAnchor, constant: -10).isActive = true
} else {
pageControl.trailingAnchor.constraint(equalTo: self.scrollViewSubView.trailingAnchor, constant: -10).isActive = true
}
//pageControl.backgroundColor = .black
//pageControl.tintColor = .white
pageControl.pageIndicatorTintColor = .lightGray
pageControl.currentPageIndicatorTintColor = .black
pageControl.numberOfPages = 3
pageControl.currentPage = 0
//pageControl.hidesForSinglePage = true
}
func winGiftVoucherCodeFunc(){
let wGVC : WinGiftVoucherView = UIView.fromNib()
winGiftVoucherCode = wGVC
winGiftVoucherCode.translatesAutoresizingMaskIntoConstraints = false
self.scrollViewSubView.addSubview(winGiftVoucherCode)
if #available(iOS 11.0, *) {
winGiftVoucherCode.topAnchor.constraint(equalTo: pageControl.bottomAnchor , constant: 10).isActive = true
} else {
winGiftVoucherCode.topAnchor.constraint(equalTo: pageControl.bottomAnchor , constant: 10).isActive = true
}
if #available(iOS 11.0, *) {
winGiftVoucherCode.heightAnchor.constraint(equalToConstant: 150).isActive = true
// campaignCollectionView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: -10).isActive = true
} else {
winGiftVoucherCode.heightAnchor.constraint(equalToConstant: 150).isActive = true
// campaignCollectionView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor, constant: -10).isActive = true
}
if #available(iOS 11.0, *) {
winGiftVoucherCode.leadingAnchor.constraint(equalTo: scrollViewSubView.safeAreaLayoutGuide.leadingAnchor, constant: 10).isActive = true
} else {
winGiftVoucherCode.leadingAnchor.constraint(equalTo: self.scrollViewSubView.leadingAnchor, constant: 10).isActive = true
}
if #available(iOS 11.0, *) {
winGiftVoucherCode.trailingAnchor.constraint(equalTo: scrollViewSubView.safeAreaLayoutGuide.trailingAnchor, constant: -10).isActive = true
} else {
winGiftVoucherCode.trailingAnchor.constraint(equalTo: self.scrollViewSubView.trailingAnchor, constant: -10).isActive = true
}
let rate : CGFloat = 0.85
let mainRect = winGiftVoucherCode.frame
let rec = winGiftVoucherCode.progressX.frame
let aa = ProgressView(frame: CGRect(x: 0, y: 0, width: ( mainRect.size.width - 100 ) * rate , height: rec.size.height) )
aa.backgroundColor = UIColor.black
self.winGiftVoucherCode.progressX.addSubview(aa)
winGiftVoucherCode.voucherRemainderViewLeftConstraint.constant = ( winGiftVoucherCode.frame.width - 100 ) * rate - 20
}
func lastCallDiscountFunc(){
let lCDV : LastCallDiscountView = UIView.fromNib()
lastCallDiscountView = lCDV
lastCallDiscountView.translatesAutoresizingMaskIntoConstraints = false
self.scrollViewSubView.addSubview(lastCallDiscountView)
if #available(iOS 11.0, *) {
lastCallDiscountView.topAnchor.constraint(equalTo: winGiftVoucherCode.bottomAnchor , constant: 10).isActive = true
} else {
lastCallDiscountView.topAnchor.constraint(equalTo: winGiftVoucherCode.bottomAnchor , constant: 10).isActive = true
}
if #available(iOS 11.0, *) {
lastCallDiscountView.heightAnchor.constraint(equalToConstant: 150).isActive = true
// campaignCollectionView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: -10).isActive = true
} else {
lastCallDiscountView.heightAnchor.constraint(equalToConstant: 150).isActive = true
// campaignCollectionView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor, constant: -10).isActive = true
}
if #available(iOS 11.0, *) {
lastCallDiscountView.leadingAnchor.constraint(equalTo: scrollViewSubView.safeAreaLayoutGuide.leadingAnchor, constant: 10).isActive = true
} else {
lastCallDiscountView.leadingAnchor.constraint(equalTo: self.scrollViewSubView.leadingAnchor, constant: 10).isActive = true
}
if #available(iOS 11.0, *) {
lastCallDiscountView.trailingAnchor.constraint(equalTo: scrollViewSubView.safeAreaLayoutGuide.trailingAnchor, constant: -10).isActive = true
} else {
lastCallDiscountView.trailingAnchor.constraint(equalTo: self.scrollViewSubView.trailingAnchor, constant: -10).isActive = true
}
}
func lastCallDiscountFunc2(){
let lCDV : LastCallDiscountView = UIView.fromNib()
lastCallDiscountView2 = lCDV
lastCallDiscountView2.translatesAutoresizingMaskIntoConstraints = false
self.scrollViewSubView.addSubview(lastCallDiscountView2)
if #available(iOS 11.0, *) {
lastCallDiscountView2.topAnchor.constraint(equalTo: lastCallDiscountView.bottomAnchor , constant: 10).isActive = true
} else {
lastCallDiscountView2.topAnchor.constraint(equalTo: lastCallDiscountView.bottomAnchor , constant: 10).isActive = true
}
if #available(iOS 11.0, *) {
lastCallDiscountView2.heightAnchor.constraint(equalToConstant: 150).isActive = true
// campaignCollectionView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: -10).isActive = true
} else {
lastCallDiscountView2.heightAnchor.constraint(equalToConstant: 150).isActive = true
// campaignCollectionView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor, constant: -10).isActive = true
}
if #available(iOS 11.0, *) {
lastCallDiscountView2.leadingAnchor.constraint(equalTo: scrollViewSubView.safeAreaLayoutGuide.leadingAnchor, constant: 10).isActive = true
} else {
lastCallDiscountView2.leadingAnchor.constraint(equalTo: self.scrollViewSubView.leadingAnchor, constant: 10).isActive = true
}
if #available(iOS 11.0, *) {
lastCallDiscountView2.trailingAnchor.constraint(equalTo: scrollViewSubView.safeAreaLayoutGuide.trailingAnchor, constant: -10).isActive = true
} else {
lastCallDiscountView2.trailingAnchor.constraint(equalTo: self.scrollViewSubView.trailingAnchor, constant: -10).isActive = true
}
}
func lastCallDiscountFunc3(){
let lCDV : LastCallDiscountView = UIView.fromNib()
lastCallDiscountView3 = lCDV
lastCallDiscountView3.translatesAutoresizingMaskIntoConstraints = false
self.scrollViewSubView.addSubview(lastCallDiscountView3)
if #available(iOS 11.0, *) {
lastCallDiscountView3.topAnchor.constraint(equalTo: lastCallDiscountView2.bottomAnchor , constant: 10).isActive = true
} else {
lastCallDiscountView3.topAnchor.constraint(equalTo: lastCallDiscountView2.bottomAnchor , constant: 10).isActive = true
}
if #available(iOS 11.0, *) {
lastCallDiscountView3.heightAnchor.constraint(equalToConstant: 150).isActive = true
} else {
lastCallDiscountView3.heightAnchor.constraint(equalToConstant: 150).isActive = true
}
if #available(iOS 11.0, *) {
lastCallDiscountView3.leadingAnchor.constraint(equalTo: scrollViewSubView.safeAreaLayoutGuide.leadingAnchor, constant: 10).isActive = true
} else {
lastCallDiscountView3.leadingAnchor.constraint(equalTo: self.scrollViewSubView.leadingAnchor, constant: 10).isActive = true
}
if #available(iOS 11.0, *) {
lastCallDiscountView3.trailingAnchor.constraint(equalTo: scrollViewSubView.safeAreaLayoutGuide.trailingAnchor, constant: -10).isActive = true
} else {
lastCallDiscountView3.trailingAnchor.constraint(equalTo: self.scrollViewSubView.trailingAnchor, constant: -10).isActive = true
}
if #available(iOS 11.0, *) {
lastCallDiscountView3.bottomAnchor.constraint(greaterThanOrEqualTo: self.scrollViewSubView.safeAreaLayoutGuide.bottomAnchor, constant: 10).isActive = true
} else {
lastCallDiscountView3.bottomAnchor.constraint(greaterThanOrEqualTo: self.scrollViewSubView.bottomAnchor, constant: 10).isActive = true
}
}
ios swift uiscrollview xib nib
add a comment |
I try to use Xib
files with UIScrollView
. I set the constraints (top ,bottom ,leading ,trailing . equal width and height (priority 250)).
I added the xibs
to view that inside of UIScrollView
. And set the last element bottom anchor with greaterThanOrEqualTo
.
But scrollview not scroll . Where is the problem ?
Thanks in advance.
@IBOutlet weak var scrollView: UIScrollView!
@IBOutlet weak var scrollViewSubView: UIView!
var campaignCollectionView:UICollectionView!
var pageControl:UIPageControl!
var winGiftVoucherCode:WinGiftVoucherView!
var lastCallDiscountView : LastCallDiscountView!
var lastCallDiscountView2 : LastCallDiscountView!
var lastCallDiscountView3 : LastCallDiscountView!
override func viewDidLoad() {
super.viewDidLoad()
setupNavigationBarItems()
setCollectionView()
setPageControl()
winGiftVoucherCodeFunc()
lastCallDiscountFunc()
lastCallDiscountFunc2()
lastCallDiscountFunc3()
}
func setCollectionView(){
let layout = UICollectionViewFlowLayout()
layout.scrollDirection = .horizontal
let cCV = UICollectionView(frame: self.view.bounds, collectionViewLayout: layout)
campaignCollectionView = cCV
campaignCollectionView.translatesAutoresizingMaskIntoConstraints = false
self.scrollViewSubView.addSubview(campaignCollectionView)
campaignCollectionView.dataSource = self
campaignCollectionView.delegate = self
campaignCollectionView.backgroundColor = .white
campaignCollectionView.isPagingEnabled = true
campaignCollectionView.isScrollEnabled = true
campaignCollectionView.showsHorizontalScrollIndicator = false
if #available(iOS 11.0, *) {
campaignCollectionView.topAnchor.constraint(equalTo: scrollViewSubView.safeAreaLayoutGuide.topAnchor, constant: 10).isActive = true
} else {
campaignCollectionView.topAnchor.constraint(equalTo: self.scrollViewSubView.topAnchor, constant: 10).isActive = true
}
if #available(iOS 11.0, *) {
campaignCollectionView.heightAnchor.constraint(equalToConstant: 150).isActive = true
// campaignCollectionView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: -10).isActive = true
} else {
campaignCollectionView.heightAnchor.constraint(equalToConstant: 150).isActive = true
// campaignCollectionView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor, constant: -10).isActive = true
}
if #available(iOS 11.0, *) {
campaignCollectionView.leadingAnchor.constraint(equalTo: scrollViewSubView.safeAreaLayoutGuide.leadingAnchor, constant: 10).isActive = true
} else {
campaignCollectionView.leadingAnchor.constraint(equalTo: self.scrollViewSubView.leadingAnchor, constant: 10).isActive = true
}
if #available(iOS 11.0, *) {
campaignCollectionView.trailingAnchor.constraint(equalTo: scrollViewSubView.safeAreaLayoutGuide.trailingAnchor, constant: -10).isActive = true
} else {
campaignCollectionView.trailingAnchor.constraint(equalTo: self.scrollViewSubView.trailingAnchor, constant: -10).isActive = true
}
campaignCollectionView.register(UINib(nibName: "CampaignCollectionViewCell", bundle: nil), forCellWithReuseIdentifier: "CampaignCollectionViewCell")
}
func setPageControl(){
let pC = UIPageControl()
pageControl = pC
pageControl.translatesAutoresizingMaskIntoConstraints = false
self.scrollViewSubView.addSubview(pageControl)
if #available(iOS 11.0, *) {
pageControl.topAnchor.constraint(equalTo: campaignCollectionView.bottomAnchor , constant: 10).isActive = true
} else {
pageControl.topAnchor.constraint(equalTo: campaignCollectionView.bottomAnchor , constant: 10).isActive = true
}
if #available(iOS 11.0, *) {
pageControl.heightAnchor.constraint(equalToConstant: 10).isActive = true
// campaignCollectionView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: -10).isActive = true
} else {
pageControl.heightAnchor.constraint(equalToConstant: 10).isActive = true
// campaignCollectionView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor, constant: -10).isActive = true
}
if #available(iOS 11.0, *) {
pageControl.leadingAnchor.constraint(equalTo: scrollViewSubView.safeAreaLayoutGuide.leadingAnchor, constant: 10).isActive = true
} else {
pageControl.leadingAnchor.constraint(equalTo: self.scrollViewSubView.leadingAnchor, constant: 10).isActive = true
}
if #available(iOS 11.0, *) {
pageControl.trailingAnchor.constraint(equalTo: scrollViewSubView.safeAreaLayoutGuide.trailingAnchor, constant: -10).isActive = true
} else {
pageControl.trailingAnchor.constraint(equalTo: self.scrollViewSubView.trailingAnchor, constant: -10).isActive = true
}
//pageControl.backgroundColor = .black
//pageControl.tintColor = .white
pageControl.pageIndicatorTintColor = .lightGray
pageControl.currentPageIndicatorTintColor = .black
pageControl.numberOfPages = 3
pageControl.currentPage = 0
//pageControl.hidesForSinglePage = true
}
func winGiftVoucherCodeFunc(){
let wGVC : WinGiftVoucherView = UIView.fromNib()
winGiftVoucherCode = wGVC
winGiftVoucherCode.translatesAutoresizingMaskIntoConstraints = false
self.scrollViewSubView.addSubview(winGiftVoucherCode)
if #available(iOS 11.0, *) {
winGiftVoucherCode.topAnchor.constraint(equalTo: pageControl.bottomAnchor , constant: 10).isActive = true
} else {
winGiftVoucherCode.topAnchor.constraint(equalTo: pageControl.bottomAnchor , constant: 10).isActive = true
}
if #available(iOS 11.0, *) {
winGiftVoucherCode.heightAnchor.constraint(equalToConstant: 150).isActive = true
// campaignCollectionView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: -10).isActive = true
} else {
winGiftVoucherCode.heightAnchor.constraint(equalToConstant: 150).isActive = true
// campaignCollectionView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor, constant: -10).isActive = true
}
if #available(iOS 11.0, *) {
winGiftVoucherCode.leadingAnchor.constraint(equalTo: scrollViewSubView.safeAreaLayoutGuide.leadingAnchor, constant: 10).isActive = true
} else {
winGiftVoucherCode.leadingAnchor.constraint(equalTo: self.scrollViewSubView.leadingAnchor, constant: 10).isActive = true
}
if #available(iOS 11.0, *) {
winGiftVoucherCode.trailingAnchor.constraint(equalTo: scrollViewSubView.safeAreaLayoutGuide.trailingAnchor, constant: -10).isActive = true
} else {
winGiftVoucherCode.trailingAnchor.constraint(equalTo: self.scrollViewSubView.trailingAnchor, constant: -10).isActive = true
}
let rate : CGFloat = 0.85
let mainRect = winGiftVoucherCode.frame
let rec = winGiftVoucherCode.progressX.frame
let aa = ProgressView(frame: CGRect(x: 0, y: 0, width: ( mainRect.size.width - 100 ) * rate , height: rec.size.height) )
aa.backgroundColor = UIColor.black
self.winGiftVoucherCode.progressX.addSubview(aa)
winGiftVoucherCode.voucherRemainderViewLeftConstraint.constant = ( winGiftVoucherCode.frame.width - 100 ) * rate - 20
}
func lastCallDiscountFunc(){
let lCDV : LastCallDiscountView = UIView.fromNib()
lastCallDiscountView = lCDV
lastCallDiscountView.translatesAutoresizingMaskIntoConstraints = false
self.scrollViewSubView.addSubview(lastCallDiscountView)
if #available(iOS 11.0, *) {
lastCallDiscountView.topAnchor.constraint(equalTo: winGiftVoucherCode.bottomAnchor , constant: 10).isActive = true
} else {
lastCallDiscountView.topAnchor.constraint(equalTo: winGiftVoucherCode.bottomAnchor , constant: 10).isActive = true
}
if #available(iOS 11.0, *) {
lastCallDiscountView.heightAnchor.constraint(equalToConstant: 150).isActive = true
// campaignCollectionView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: -10).isActive = true
} else {
lastCallDiscountView.heightAnchor.constraint(equalToConstant: 150).isActive = true
// campaignCollectionView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor, constant: -10).isActive = true
}
if #available(iOS 11.0, *) {
lastCallDiscountView.leadingAnchor.constraint(equalTo: scrollViewSubView.safeAreaLayoutGuide.leadingAnchor, constant: 10).isActive = true
} else {
lastCallDiscountView.leadingAnchor.constraint(equalTo: self.scrollViewSubView.leadingAnchor, constant: 10).isActive = true
}
if #available(iOS 11.0, *) {
lastCallDiscountView.trailingAnchor.constraint(equalTo: scrollViewSubView.safeAreaLayoutGuide.trailingAnchor, constant: -10).isActive = true
} else {
lastCallDiscountView.trailingAnchor.constraint(equalTo: self.scrollViewSubView.trailingAnchor, constant: -10).isActive = true
}
}
func lastCallDiscountFunc2(){
let lCDV : LastCallDiscountView = UIView.fromNib()
lastCallDiscountView2 = lCDV
lastCallDiscountView2.translatesAutoresizingMaskIntoConstraints = false
self.scrollViewSubView.addSubview(lastCallDiscountView2)
if #available(iOS 11.0, *) {
lastCallDiscountView2.topAnchor.constraint(equalTo: lastCallDiscountView.bottomAnchor , constant: 10).isActive = true
} else {
lastCallDiscountView2.topAnchor.constraint(equalTo: lastCallDiscountView.bottomAnchor , constant: 10).isActive = true
}
if #available(iOS 11.0, *) {
lastCallDiscountView2.heightAnchor.constraint(equalToConstant: 150).isActive = true
// campaignCollectionView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: -10).isActive = true
} else {
lastCallDiscountView2.heightAnchor.constraint(equalToConstant: 150).isActive = true
// campaignCollectionView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor, constant: -10).isActive = true
}
if #available(iOS 11.0, *) {
lastCallDiscountView2.leadingAnchor.constraint(equalTo: scrollViewSubView.safeAreaLayoutGuide.leadingAnchor, constant: 10).isActive = true
} else {
lastCallDiscountView2.leadingAnchor.constraint(equalTo: self.scrollViewSubView.leadingAnchor, constant: 10).isActive = true
}
if #available(iOS 11.0, *) {
lastCallDiscountView2.trailingAnchor.constraint(equalTo: scrollViewSubView.safeAreaLayoutGuide.trailingAnchor, constant: -10).isActive = true
} else {
lastCallDiscountView2.trailingAnchor.constraint(equalTo: self.scrollViewSubView.trailingAnchor, constant: -10).isActive = true
}
}
func lastCallDiscountFunc3(){
let lCDV : LastCallDiscountView = UIView.fromNib()
lastCallDiscountView3 = lCDV
lastCallDiscountView3.translatesAutoresizingMaskIntoConstraints = false
self.scrollViewSubView.addSubview(lastCallDiscountView3)
if #available(iOS 11.0, *) {
lastCallDiscountView3.topAnchor.constraint(equalTo: lastCallDiscountView2.bottomAnchor , constant: 10).isActive = true
} else {
lastCallDiscountView3.topAnchor.constraint(equalTo: lastCallDiscountView2.bottomAnchor , constant: 10).isActive = true
}
if #available(iOS 11.0, *) {
lastCallDiscountView3.heightAnchor.constraint(equalToConstant: 150).isActive = true
} else {
lastCallDiscountView3.heightAnchor.constraint(equalToConstant: 150).isActive = true
}
if #available(iOS 11.0, *) {
lastCallDiscountView3.leadingAnchor.constraint(equalTo: scrollViewSubView.safeAreaLayoutGuide.leadingAnchor, constant: 10).isActive = true
} else {
lastCallDiscountView3.leadingAnchor.constraint(equalTo: self.scrollViewSubView.leadingAnchor, constant: 10).isActive = true
}
if #available(iOS 11.0, *) {
lastCallDiscountView3.trailingAnchor.constraint(equalTo: scrollViewSubView.safeAreaLayoutGuide.trailingAnchor, constant: -10).isActive = true
} else {
lastCallDiscountView3.trailingAnchor.constraint(equalTo: self.scrollViewSubView.trailingAnchor, constant: -10).isActive = true
}
if #available(iOS 11.0, *) {
lastCallDiscountView3.bottomAnchor.constraint(greaterThanOrEqualTo: self.scrollViewSubView.safeAreaLayoutGuide.bottomAnchor, constant: 10).isActive = true
} else {
lastCallDiscountView3.bottomAnchor.constraint(greaterThanOrEqualTo: self.scrollViewSubView.bottomAnchor, constant: 10).isActive = true
}
}
ios swift uiscrollview xib nib
add a comment |
I try to use Xib
files with UIScrollView
. I set the constraints (top ,bottom ,leading ,trailing . equal width and height (priority 250)).
I added the xibs
to view that inside of UIScrollView
. And set the last element bottom anchor with greaterThanOrEqualTo
.
But scrollview not scroll . Where is the problem ?
Thanks in advance.
@IBOutlet weak var scrollView: UIScrollView!
@IBOutlet weak var scrollViewSubView: UIView!
var campaignCollectionView:UICollectionView!
var pageControl:UIPageControl!
var winGiftVoucherCode:WinGiftVoucherView!
var lastCallDiscountView : LastCallDiscountView!
var lastCallDiscountView2 : LastCallDiscountView!
var lastCallDiscountView3 : LastCallDiscountView!
override func viewDidLoad() {
super.viewDidLoad()
setupNavigationBarItems()
setCollectionView()
setPageControl()
winGiftVoucherCodeFunc()
lastCallDiscountFunc()
lastCallDiscountFunc2()
lastCallDiscountFunc3()
}
func setCollectionView(){
let layout = UICollectionViewFlowLayout()
layout.scrollDirection = .horizontal
let cCV = UICollectionView(frame: self.view.bounds, collectionViewLayout: layout)
campaignCollectionView = cCV
campaignCollectionView.translatesAutoresizingMaskIntoConstraints = false
self.scrollViewSubView.addSubview(campaignCollectionView)
campaignCollectionView.dataSource = self
campaignCollectionView.delegate = self
campaignCollectionView.backgroundColor = .white
campaignCollectionView.isPagingEnabled = true
campaignCollectionView.isScrollEnabled = true
campaignCollectionView.showsHorizontalScrollIndicator = false
if #available(iOS 11.0, *) {
campaignCollectionView.topAnchor.constraint(equalTo: scrollViewSubView.safeAreaLayoutGuide.topAnchor, constant: 10).isActive = true
} else {
campaignCollectionView.topAnchor.constraint(equalTo: self.scrollViewSubView.topAnchor, constant: 10).isActive = true
}
if #available(iOS 11.0, *) {
campaignCollectionView.heightAnchor.constraint(equalToConstant: 150).isActive = true
// campaignCollectionView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: -10).isActive = true
} else {
campaignCollectionView.heightAnchor.constraint(equalToConstant: 150).isActive = true
// campaignCollectionView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor, constant: -10).isActive = true
}
if #available(iOS 11.0, *) {
campaignCollectionView.leadingAnchor.constraint(equalTo: scrollViewSubView.safeAreaLayoutGuide.leadingAnchor, constant: 10).isActive = true
} else {
campaignCollectionView.leadingAnchor.constraint(equalTo: self.scrollViewSubView.leadingAnchor, constant: 10).isActive = true
}
if #available(iOS 11.0, *) {
campaignCollectionView.trailingAnchor.constraint(equalTo: scrollViewSubView.safeAreaLayoutGuide.trailingAnchor, constant: -10).isActive = true
} else {
campaignCollectionView.trailingAnchor.constraint(equalTo: self.scrollViewSubView.trailingAnchor, constant: -10).isActive = true
}
campaignCollectionView.register(UINib(nibName: "CampaignCollectionViewCell", bundle: nil), forCellWithReuseIdentifier: "CampaignCollectionViewCell")
}
func setPageControl(){
let pC = UIPageControl()
pageControl = pC
pageControl.translatesAutoresizingMaskIntoConstraints = false
self.scrollViewSubView.addSubview(pageControl)
if #available(iOS 11.0, *) {
pageControl.topAnchor.constraint(equalTo: campaignCollectionView.bottomAnchor , constant: 10).isActive = true
} else {
pageControl.topAnchor.constraint(equalTo: campaignCollectionView.bottomAnchor , constant: 10).isActive = true
}
if #available(iOS 11.0, *) {
pageControl.heightAnchor.constraint(equalToConstant: 10).isActive = true
// campaignCollectionView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: -10).isActive = true
} else {
pageControl.heightAnchor.constraint(equalToConstant: 10).isActive = true
// campaignCollectionView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor, constant: -10).isActive = true
}
if #available(iOS 11.0, *) {
pageControl.leadingAnchor.constraint(equalTo: scrollViewSubView.safeAreaLayoutGuide.leadingAnchor, constant: 10).isActive = true
} else {
pageControl.leadingAnchor.constraint(equalTo: self.scrollViewSubView.leadingAnchor, constant: 10).isActive = true
}
if #available(iOS 11.0, *) {
pageControl.trailingAnchor.constraint(equalTo: scrollViewSubView.safeAreaLayoutGuide.trailingAnchor, constant: -10).isActive = true
} else {
pageControl.trailingAnchor.constraint(equalTo: self.scrollViewSubView.trailingAnchor, constant: -10).isActive = true
}
//pageControl.backgroundColor = .black
//pageControl.tintColor = .white
pageControl.pageIndicatorTintColor = .lightGray
pageControl.currentPageIndicatorTintColor = .black
pageControl.numberOfPages = 3
pageControl.currentPage = 0
//pageControl.hidesForSinglePage = true
}
func winGiftVoucherCodeFunc(){
let wGVC : WinGiftVoucherView = UIView.fromNib()
winGiftVoucherCode = wGVC
winGiftVoucherCode.translatesAutoresizingMaskIntoConstraints = false
self.scrollViewSubView.addSubview(winGiftVoucherCode)
if #available(iOS 11.0, *) {
winGiftVoucherCode.topAnchor.constraint(equalTo: pageControl.bottomAnchor , constant: 10).isActive = true
} else {
winGiftVoucherCode.topAnchor.constraint(equalTo: pageControl.bottomAnchor , constant: 10).isActive = true
}
if #available(iOS 11.0, *) {
winGiftVoucherCode.heightAnchor.constraint(equalToConstant: 150).isActive = true
// campaignCollectionView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: -10).isActive = true
} else {
winGiftVoucherCode.heightAnchor.constraint(equalToConstant: 150).isActive = true
// campaignCollectionView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor, constant: -10).isActive = true
}
if #available(iOS 11.0, *) {
winGiftVoucherCode.leadingAnchor.constraint(equalTo: scrollViewSubView.safeAreaLayoutGuide.leadingAnchor, constant: 10).isActive = true
} else {
winGiftVoucherCode.leadingAnchor.constraint(equalTo: self.scrollViewSubView.leadingAnchor, constant: 10).isActive = true
}
if #available(iOS 11.0, *) {
winGiftVoucherCode.trailingAnchor.constraint(equalTo: scrollViewSubView.safeAreaLayoutGuide.trailingAnchor, constant: -10).isActive = true
} else {
winGiftVoucherCode.trailingAnchor.constraint(equalTo: self.scrollViewSubView.trailingAnchor, constant: -10).isActive = true
}
let rate : CGFloat = 0.85
let mainRect = winGiftVoucherCode.frame
let rec = winGiftVoucherCode.progressX.frame
let aa = ProgressView(frame: CGRect(x: 0, y: 0, width: ( mainRect.size.width - 100 ) * rate , height: rec.size.height) )
aa.backgroundColor = UIColor.black
self.winGiftVoucherCode.progressX.addSubview(aa)
winGiftVoucherCode.voucherRemainderViewLeftConstraint.constant = ( winGiftVoucherCode.frame.width - 100 ) * rate - 20
}
func lastCallDiscountFunc(){
let lCDV : LastCallDiscountView = UIView.fromNib()
lastCallDiscountView = lCDV
lastCallDiscountView.translatesAutoresizingMaskIntoConstraints = false
self.scrollViewSubView.addSubview(lastCallDiscountView)
if #available(iOS 11.0, *) {
lastCallDiscountView.topAnchor.constraint(equalTo: winGiftVoucherCode.bottomAnchor , constant: 10).isActive = true
} else {
lastCallDiscountView.topAnchor.constraint(equalTo: winGiftVoucherCode.bottomAnchor , constant: 10).isActive = true
}
if #available(iOS 11.0, *) {
lastCallDiscountView.heightAnchor.constraint(equalToConstant: 150).isActive = true
// campaignCollectionView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: -10).isActive = true
} else {
lastCallDiscountView.heightAnchor.constraint(equalToConstant: 150).isActive = true
// campaignCollectionView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor, constant: -10).isActive = true
}
if #available(iOS 11.0, *) {
lastCallDiscountView.leadingAnchor.constraint(equalTo: scrollViewSubView.safeAreaLayoutGuide.leadingAnchor, constant: 10).isActive = true
} else {
lastCallDiscountView.leadingAnchor.constraint(equalTo: self.scrollViewSubView.leadingAnchor, constant: 10).isActive = true
}
if #available(iOS 11.0, *) {
lastCallDiscountView.trailingAnchor.constraint(equalTo: scrollViewSubView.safeAreaLayoutGuide.trailingAnchor, constant: -10).isActive = true
} else {
lastCallDiscountView.trailingAnchor.constraint(equalTo: self.scrollViewSubView.trailingAnchor, constant: -10).isActive = true
}
}
func lastCallDiscountFunc2(){
let lCDV : LastCallDiscountView = UIView.fromNib()
lastCallDiscountView2 = lCDV
lastCallDiscountView2.translatesAutoresizingMaskIntoConstraints = false
self.scrollViewSubView.addSubview(lastCallDiscountView2)
if #available(iOS 11.0, *) {
lastCallDiscountView2.topAnchor.constraint(equalTo: lastCallDiscountView.bottomAnchor , constant: 10).isActive = true
} else {
lastCallDiscountView2.topAnchor.constraint(equalTo: lastCallDiscountView.bottomAnchor , constant: 10).isActive = true
}
if #available(iOS 11.0, *) {
lastCallDiscountView2.heightAnchor.constraint(equalToConstant: 150).isActive = true
// campaignCollectionView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: -10).isActive = true
} else {
lastCallDiscountView2.heightAnchor.constraint(equalToConstant: 150).isActive = true
// campaignCollectionView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor, constant: -10).isActive = true
}
if #available(iOS 11.0, *) {
lastCallDiscountView2.leadingAnchor.constraint(equalTo: scrollViewSubView.safeAreaLayoutGuide.leadingAnchor, constant: 10).isActive = true
} else {
lastCallDiscountView2.leadingAnchor.constraint(equalTo: self.scrollViewSubView.leadingAnchor, constant: 10).isActive = true
}
if #available(iOS 11.0, *) {
lastCallDiscountView2.trailingAnchor.constraint(equalTo: scrollViewSubView.safeAreaLayoutGuide.trailingAnchor, constant: -10).isActive = true
} else {
lastCallDiscountView2.trailingAnchor.constraint(equalTo: self.scrollViewSubView.trailingAnchor, constant: -10).isActive = true
}
}
func lastCallDiscountFunc3(){
let lCDV : LastCallDiscountView = UIView.fromNib()
lastCallDiscountView3 = lCDV
lastCallDiscountView3.translatesAutoresizingMaskIntoConstraints = false
self.scrollViewSubView.addSubview(lastCallDiscountView3)
if #available(iOS 11.0, *) {
lastCallDiscountView3.topAnchor.constraint(equalTo: lastCallDiscountView2.bottomAnchor , constant: 10).isActive = true
} else {
lastCallDiscountView3.topAnchor.constraint(equalTo: lastCallDiscountView2.bottomAnchor , constant: 10).isActive = true
}
if #available(iOS 11.0, *) {
lastCallDiscountView3.heightAnchor.constraint(equalToConstant: 150).isActive = true
} else {
lastCallDiscountView3.heightAnchor.constraint(equalToConstant: 150).isActive = true
}
if #available(iOS 11.0, *) {
lastCallDiscountView3.leadingAnchor.constraint(equalTo: scrollViewSubView.safeAreaLayoutGuide.leadingAnchor, constant: 10).isActive = true
} else {
lastCallDiscountView3.leadingAnchor.constraint(equalTo: self.scrollViewSubView.leadingAnchor, constant: 10).isActive = true
}
if #available(iOS 11.0, *) {
lastCallDiscountView3.trailingAnchor.constraint(equalTo: scrollViewSubView.safeAreaLayoutGuide.trailingAnchor, constant: -10).isActive = true
} else {
lastCallDiscountView3.trailingAnchor.constraint(equalTo: self.scrollViewSubView.trailingAnchor, constant: -10).isActive = true
}
if #available(iOS 11.0, *) {
lastCallDiscountView3.bottomAnchor.constraint(greaterThanOrEqualTo: self.scrollViewSubView.safeAreaLayoutGuide.bottomAnchor, constant: 10).isActive = true
} else {
lastCallDiscountView3.bottomAnchor.constraint(greaterThanOrEqualTo: self.scrollViewSubView.bottomAnchor, constant: 10).isActive = true
}
}
ios swift uiscrollview xib nib
I try to use Xib
files with UIScrollView
. I set the constraints (top ,bottom ,leading ,trailing . equal width and height (priority 250)).
I added the xibs
to view that inside of UIScrollView
. And set the last element bottom anchor with greaterThanOrEqualTo
.
But scrollview not scroll . Where is the problem ?
Thanks in advance.
@IBOutlet weak var scrollView: UIScrollView!
@IBOutlet weak var scrollViewSubView: UIView!
var campaignCollectionView:UICollectionView!
var pageControl:UIPageControl!
var winGiftVoucherCode:WinGiftVoucherView!
var lastCallDiscountView : LastCallDiscountView!
var lastCallDiscountView2 : LastCallDiscountView!
var lastCallDiscountView3 : LastCallDiscountView!
override func viewDidLoad() {
super.viewDidLoad()
setupNavigationBarItems()
setCollectionView()
setPageControl()
winGiftVoucherCodeFunc()
lastCallDiscountFunc()
lastCallDiscountFunc2()
lastCallDiscountFunc3()
}
func setCollectionView(){
let layout = UICollectionViewFlowLayout()
layout.scrollDirection = .horizontal
let cCV = UICollectionView(frame: self.view.bounds, collectionViewLayout: layout)
campaignCollectionView = cCV
campaignCollectionView.translatesAutoresizingMaskIntoConstraints = false
self.scrollViewSubView.addSubview(campaignCollectionView)
campaignCollectionView.dataSource = self
campaignCollectionView.delegate = self
campaignCollectionView.backgroundColor = .white
campaignCollectionView.isPagingEnabled = true
campaignCollectionView.isScrollEnabled = true
campaignCollectionView.showsHorizontalScrollIndicator = false
if #available(iOS 11.0, *) {
campaignCollectionView.topAnchor.constraint(equalTo: scrollViewSubView.safeAreaLayoutGuide.topAnchor, constant: 10).isActive = true
} else {
campaignCollectionView.topAnchor.constraint(equalTo: self.scrollViewSubView.topAnchor, constant: 10).isActive = true
}
if #available(iOS 11.0, *) {
campaignCollectionView.heightAnchor.constraint(equalToConstant: 150).isActive = true
// campaignCollectionView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: -10).isActive = true
} else {
campaignCollectionView.heightAnchor.constraint(equalToConstant: 150).isActive = true
// campaignCollectionView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor, constant: -10).isActive = true
}
if #available(iOS 11.0, *) {
campaignCollectionView.leadingAnchor.constraint(equalTo: scrollViewSubView.safeAreaLayoutGuide.leadingAnchor, constant: 10).isActive = true
} else {
campaignCollectionView.leadingAnchor.constraint(equalTo: self.scrollViewSubView.leadingAnchor, constant: 10).isActive = true
}
if #available(iOS 11.0, *) {
campaignCollectionView.trailingAnchor.constraint(equalTo: scrollViewSubView.safeAreaLayoutGuide.trailingAnchor, constant: -10).isActive = true
} else {
campaignCollectionView.trailingAnchor.constraint(equalTo: self.scrollViewSubView.trailingAnchor, constant: -10).isActive = true
}
campaignCollectionView.register(UINib(nibName: "CampaignCollectionViewCell", bundle: nil), forCellWithReuseIdentifier: "CampaignCollectionViewCell")
}
func setPageControl(){
let pC = UIPageControl()
pageControl = pC
pageControl.translatesAutoresizingMaskIntoConstraints = false
self.scrollViewSubView.addSubview(pageControl)
if #available(iOS 11.0, *) {
pageControl.topAnchor.constraint(equalTo: campaignCollectionView.bottomAnchor , constant: 10).isActive = true
} else {
pageControl.topAnchor.constraint(equalTo: campaignCollectionView.bottomAnchor , constant: 10).isActive = true
}
if #available(iOS 11.0, *) {
pageControl.heightAnchor.constraint(equalToConstant: 10).isActive = true
// campaignCollectionView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: -10).isActive = true
} else {
pageControl.heightAnchor.constraint(equalToConstant: 10).isActive = true
// campaignCollectionView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor, constant: -10).isActive = true
}
if #available(iOS 11.0, *) {
pageControl.leadingAnchor.constraint(equalTo: scrollViewSubView.safeAreaLayoutGuide.leadingAnchor, constant: 10).isActive = true
} else {
pageControl.leadingAnchor.constraint(equalTo: self.scrollViewSubView.leadingAnchor, constant: 10).isActive = true
}
if #available(iOS 11.0, *) {
pageControl.trailingAnchor.constraint(equalTo: scrollViewSubView.safeAreaLayoutGuide.trailingAnchor, constant: -10).isActive = true
} else {
pageControl.trailingAnchor.constraint(equalTo: self.scrollViewSubView.trailingAnchor, constant: -10).isActive = true
}
//pageControl.backgroundColor = .black
//pageControl.tintColor = .white
pageControl.pageIndicatorTintColor = .lightGray
pageControl.currentPageIndicatorTintColor = .black
pageControl.numberOfPages = 3
pageControl.currentPage = 0
//pageControl.hidesForSinglePage = true
}
func winGiftVoucherCodeFunc(){
let wGVC : WinGiftVoucherView = UIView.fromNib()
winGiftVoucherCode = wGVC
winGiftVoucherCode.translatesAutoresizingMaskIntoConstraints = false
self.scrollViewSubView.addSubview(winGiftVoucherCode)
if #available(iOS 11.0, *) {
winGiftVoucherCode.topAnchor.constraint(equalTo: pageControl.bottomAnchor , constant: 10).isActive = true
} else {
winGiftVoucherCode.topAnchor.constraint(equalTo: pageControl.bottomAnchor , constant: 10).isActive = true
}
if #available(iOS 11.0, *) {
winGiftVoucherCode.heightAnchor.constraint(equalToConstant: 150).isActive = true
// campaignCollectionView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: -10).isActive = true
} else {
winGiftVoucherCode.heightAnchor.constraint(equalToConstant: 150).isActive = true
// campaignCollectionView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor, constant: -10).isActive = true
}
if #available(iOS 11.0, *) {
winGiftVoucherCode.leadingAnchor.constraint(equalTo: scrollViewSubView.safeAreaLayoutGuide.leadingAnchor, constant: 10).isActive = true
} else {
winGiftVoucherCode.leadingAnchor.constraint(equalTo: self.scrollViewSubView.leadingAnchor, constant: 10).isActive = true
}
if #available(iOS 11.0, *) {
winGiftVoucherCode.trailingAnchor.constraint(equalTo: scrollViewSubView.safeAreaLayoutGuide.trailingAnchor, constant: -10).isActive = true
} else {
winGiftVoucherCode.trailingAnchor.constraint(equalTo: self.scrollViewSubView.trailingAnchor, constant: -10).isActive = true
}
let rate : CGFloat = 0.85
let mainRect = winGiftVoucherCode.frame
let rec = winGiftVoucherCode.progressX.frame
let aa = ProgressView(frame: CGRect(x: 0, y: 0, width: ( mainRect.size.width - 100 ) * rate , height: rec.size.height) )
aa.backgroundColor = UIColor.black
self.winGiftVoucherCode.progressX.addSubview(aa)
winGiftVoucherCode.voucherRemainderViewLeftConstraint.constant = ( winGiftVoucherCode.frame.width - 100 ) * rate - 20
}
func lastCallDiscountFunc(){
let lCDV : LastCallDiscountView = UIView.fromNib()
lastCallDiscountView = lCDV
lastCallDiscountView.translatesAutoresizingMaskIntoConstraints = false
self.scrollViewSubView.addSubview(lastCallDiscountView)
if #available(iOS 11.0, *) {
lastCallDiscountView.topAnchor.constraint(equalTo: winGiftVoucherCode.bottomAnchor , constant: 10).isActive = true
} else {
lastCallDiscountView.topAnchor.constraint(equalTo: winGiftVoucherCode.bottomAnchor , constant: 10).isActive = true
}
if #available(iOS 11.0, *) {
lastCallDiscountView.heightAnchor.constraint(equalToConstant: 150).isActive = true
// campaignCollectionView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: -10).isActive = true
} else {
lastCallDiscountView.heightAnchor.constraint(equalToConstant: 150).isActive = true
// campaignCollectionView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor, constant: -10).isActive = true
}
if #available(iOS 11.0, *) {
lastCallDiscountView.leadingAnchor.constraint(equalTo: scrollViewSubView.safeAreaLayoutGuide.leadingAnchor, constant: 10).isActive = true
} else {
lastCallDiscountView.leadingAnchor.constraint(equalTo: self.scrollViewSubView.leadingAnchor, constant: 10).isActive = true
}
if #available(iOS 11.0, *) {
lastCallDiscountView.trailingAnchor.constraint(equalTo: scrollViewSubView.safeAreaLayoutGuide.trailingAnchor, constant: -10).isActive = true
} else {
lastCallDiscountView.trailingAnchor.constraint(equalTo: self.scrollViewSubView.trailingAnchor, constant: -10).isActive = true
}
}
func lastCallDiscountFunc2(){
let lCDV : LastCallDiscountView = UIView.fromNib()
lastCallDiscountView2 = lCDV
lastCallDiscountView2.translatesAutoresizingMaskIntoConstraints = false
self.scrollViewSubView.addSubview(lastCallDiscountView2)
if #available(iOS 11.0, *) {
lastCallDiscountView2.topAnchor.constraint(equalTo: lastCallDiscountView.bottomAnchor , constant: 10).isActive = true
} else {
lastCallDiscountView2.topAnchor.constraint(equalTo: lastCallDiscountView.bottomAnchor , constant: 10).isActive = true
}
if #available(iOS 11.0, *) {
lastCallDiscountView2.heightAnchor.constraint(equalToConstant: 150).isActive = true
// campaignCollectionView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: -10).isActive = true
} else {
lastCallDiscountView2.heightAnchor.constraint(equalToConstant: 150).isActive = true
// campaignCollectionView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor, constant: -10).isActive = true
}
if #available(iOS 11.0, *) {
lastCallDiscountView2.leadingAnchor.constraint(equalTo: scrollViewSubView.safeAreaLayoutGuide.leadingAnchor, constant: 10).isActive = true
} else {
lastCallDiscountView2.leadingAnchor.constraint(equalTo: self.scrollViewSubView.leadingAnchor, constant: 10).isActive = true
}
if #available(iOS 11.0, *) {
lastCallDiscountView2.trailingAnchor.constraint(equalTo: scrollViewSubView.safeAreaLayoutGuide.trailingAnchor, constant: -10).isActive = true
} else {
lastCallDiscountView2.trailingAnchor.constraint(equalTo: self.scrollViewSubView.trailingAnchor, constant: -10).isActive = true
}
}
func lastCallDiscountFunc3(){
let lCDV : LastCallDiscountView = UIView.fromNib()
lastCallDiscountView3 = lCDV
lastCallDiscountView3.translatesAutoresizingMaskIntoConstraints = false
self.scrollViewSubView.addSubview(lastCallDiscountView3)
if #available(iOS 11.0, *) {
lastCallDiscountView3.topAnchor.constraint(equalTo: lastCallDiscountView2.bottomAnchor , constant: 10).isActive = true
} else {
lastCallDiscountView3.topAnchor.constraint(equalTo: lastCallDiscountView2.bottomAnchor , constant: 10).isActive = true
}
if #available(iOS 11.0, *) {
lastCallDiscountView3.heightAnchor.constraint(equalToConstant: 150).isActive = true
} else {
lastCallDiscountView3.heightAnchor.constraint(equalToConstant: 150).isActive = true
}
if #available(iOS 11.0, *) {
lastCallDiscountView3.leadingAnchor.constraint(equalTo: scrollViewSubView.safeAreaLayoutGuide.leadingAnchor, constant: 10).isActive = true
} else {
lastCallDiscountView3.leadingAnchor.constraint(equalTo: self.scrollViewSubView.leadingAnchor, constant: 10).isActive = true
}
if #available(iOS 11.0, *) {
lastCallDiscountView3.trailingAnchor.constraint(equalTo: scrollViewSubView.safeAreaLayoutGuide.trailingAnchor, constant: -10).isActive = true
} else {
lastCallDiscountView3.trailingAnchor.constraint(equalTo: self.scrollViewSubView.trailingAnchor, constant: -10).isActive = true
}
if #available(iOS 11.0, *) {
lastCallDiscountView3.bottomAnchor.constraint(greaterThanOrEqualTo: self.scrollViewSubView.safeAreaLayoutGuide.bottomAnchor, constant: 10).isActive = true
} else {
lastCallDiscountView3.bottomAnchor.constraint(greaterThanOrEqualTo: self.scrollViewSubView.bottomAnchor, constant: 10).isActive = true
}
}
ios swift uiscrollview xib nib
ios swift uiscrollview xib nib
asked Nov 16 '18 at 8:54
codeByTheycodeByThey
775526
775526
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
Firstly, I strongly urge you to set up all your UI in XIBs/storyboards. It's so much easier to see what you're doing, rather than adding views programmatically.
If a scroll view doesn't scroll it probably means that its contentSize
is smaller than its frame
. It could also mean that you're blocking touches to it, which may be caused by your UICollectionView
. Embedding a scrollable view inside a scrollable view will cause you headaches.
If you want to properly set up scroll views using autolayout I recommend following this article. The core principle is:
- Add the scroll view to the VC's view and set its constraints to match the edges (leading/trailing/top/bottom) of the safe area.
- Add a content view (
UIView
) whose constraints match the edges of the scroll view. - Set the content view's
width
to match thesafeArea
'swidth
(assuming you want vertical scrolling, otherwise match theheight
s). - Add all your views to the content view and ensure that their constraints provide it with a fixed height (again, assuming you're going for vertical scrolling). That means having at least 1 view with a constraint to the top of the content view, and at least 1 with a constraint to its bottom, with set heights and vertical spaces in between.
It takes a while to learn how to do this properly, so be patient.
Thanks for repyly. I also applied all topics. But I didnt set contentsize because I give the last element constraint "greaterThanOrEqualTo" so I think no need the content size.
– codeByThey
Nov 16 '18 at 11:49
Unfortunately you can't have any>=
heights if you want the scroll view to know the content size. If you really must have that then maybe set the content view height to match the safe area height, but then it kinda defeats the purpose of the scroll view...
– Guy Kogus
Nov 17 '18 at 7:40
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53334387%2fuse-xib-with-scroll-view-swift%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Firstly, I strongly urge you to set up all your UI in XIBs/storyboards. It's so much easier to see what you're doing, rather than adding views programmatically.
If a scroll view doesn't scroll it probably means that its contentSize
is smaller than its frame
. It could also mean that you're blocking touches to it, which may be caused by your UICollectionView
. Embedding a scrollable view inside a scrollable view will cause you headaches.
If you want to properly set up scroll views using autolayout I recommend following this article. The core principle is:
- Add the scroll view to the VC's view and set its constraints to match the edges (leading/trailing/top/bottom) of the safe area.
- Add a content view (
UIView
) whose constraints match the edges of the scroll view. - Set the content view's
width
to match thesafeArea
'swidth
(assuming you want vertical scrolling, otherwise match theheight
s). - Add all your views to the content view and ensure that their constraints provide it with a fixed height (again, assuming you're going for vertical scrolling). That means having at least 1 view with a constraint to the top of the content view, and at least 1 with a constraint to its bottom, with set heights and vertical spaces in between.
It takes a while to learn how to do this properly, so be patient.
Thanks for repyly. I also applied all topics. But I didnt set contentsize because I give the last element constraint "greaterThanOrEqualTo" so I think no need the content size.
– codeByThey
Nov 16 '18 at 11:49
Unfortunately you can't have any>=
heights if you want the scroll view to know the content size. If you really must have that then maybe set the content view height to match the safe area height, but then it kinda defeats the purpose of the scroll view...
– Guy Kogus
Nov 17 '18 at 7:40
add a comment |
Firstly, I strongly urge you to set up all your UI in XIBs/storyboards. It's so much easier to see what you're doing, rather than adding views programmatically.
If a scroll view doesn't scroll it probably means that its contentSize
is smaller than its frame
. It could also mean that you're blocking touches to it, which may be caused by your UICollectionView
. Embedding a scrollable view inside a scrollable view will cause you headaches.
If you want to properly set up scroll views using autolayout I recommend following this article. The core principle is:
- Add the scroll view to the VC's view and set its constraints to match the edges (leading/trailing/top/bottom) of the safe area.
- Add a content view (
UIView
) whose constraints match the edges of the scroll view. - Set the content view's
width
to match thesafeArea
'swidth
(assuming you want vertical scrolling, otherwise match theheight
s). - Add all your views to the content view and ensure that their constraints provide it with a fixed height (again, assuming you're going for vertical scrolling). That means having at least 1 view with a constraint to the top of the content view, and at least 1 with a constraint to its bottom, with set heights and vertical spaces in between.
It takes a while to learn how to do this properly, so be patient.
Thanks for repyly. I also applied all topics. But I didnt set contentsize because I give the last element constraint "greaterThanOrEqualTo" so I think no need the content size.
– codeByThey
Nov 16 '18 at 11:49
Unfortunately you can't have any>=
heights if you want the scroll view to know the content size. If you really must have that then maybe set the content view height to match the safe area height, but then it kinda defeats the purpose of the scroll view...
– Guy Kogus
Nov 17 '18 at 7:40
add a comment |
Firstly, I strongly urge you to set up all your UI in XIBs/storyboards. It's so much easier to see what you're doing, rather than adding views programmatically.
If a scroll view doesn't scroll it probably means that its contentSize
is smaller than its frame
. It could also mean that you're blocking touches to it, which may be caused by your UICollectionView
. Embedding a scrollable view inside a scrollable view will cause you headaches.
If you want to properly set up scroll views using autolayout I recommend following this article. The core principle is:
- Add the scroll view to the VC's view and set its constraints to match the edges (leading/trailing/top/bottom) of the safe area.
- Add a content view (
UIView
) whose constraints match the edges of the scroll view. - Set the content view's
width
to match thesafeArea
'swidth
(assuming you want vertical scrolling, otherwise match theheight
s). - Add all your views to the content view and ensure that their constraints provide it with a fixed height (again, assuming you're going for vertical scrolling). That means having at least 1 view with a constraint to the top of the content view, and at least 1 with a constraint to its bottom, with set heights and vertical spaces in between.
It takes a while to learn how to do this properly, so be patient.
Firstly, I strongly urge you to set up all your UI in XIBs/storyboards. It's so much easier to see what you're doing, rather than adding views programmatically.
If a scroll view doesn't scroll it probably means that its contentSize
is smaller than its frame
. It could also mean that you're blocking touches to it, which may be caused by your UICollectionView
. Embedding a scrollable view inside a scrollable view will cause you headaches.
If you want to properly set up scroll views using autolayout I recommend following this article. The core principle is:
- Add the scroll view to the VC's view and set its constraints to match the edges (leading/trailing/top/bottom) of the safe area.
- Add a content view (
UIView
) whose constraints match the edges of the scroll view. - Set the content view's
width
to match thesafeArea
'swidth
(assuming you want vertical scrolling, otherwise match theheight
s). - Add all your views to the content view and ensure that their constraints provide it with a fixed height (again, assuming you're going for vertical scrolling). That means having at least 1 view with a constraint to the top of the content view, and at least 1 with a constraint to its bottom, with set heights and vertical spaces in between.
It takes a while to learn how to do this properly, so be patient.
answered Nov 16 '18 at 11:19
Guy KogusGuy Kogus
6,39111927
6,39111927
Thanks for repyly. I also applied all topics. But I didnt set contentsize because I give the last element constraint "greaterThanOrEqualTo" so I think no need the content size.
– codeByThey
Nov 16 '18 at 11:49
Unfortunately you can't have any>=
heights if you want the scroll view to know the content size. If you really must have that then maybe set the content view height to match the safe area height, but then it kinda defeats the purpose of the scroll view...
– Guy Kogus
Nov 17 '18 at 7:40
add a comment |
Thanks for repyly. I also applied all topics. But I didnt set contentsize because I give the last element constraint "greaterThanOrEqualTo" so I think no need the content size.
– codeByThey
Nov 16 '18 at 11:49
Unfortunately you can't have any>=
heights if you want the scroll view to know the content size. If you really must have that then maybe set the content view height to match the safe area height, but then it kinda defeats the purpose of the scroll view...
– Guy Kogus
Nov 17 '18 at 7:40
Thanks for repyly. I also applied all topics. But I didnt set contentsize because I give the last element constraint "greaterThanOrEqualTo" so I think no need the content size.
– codeByThey
Nov 16 '18 at 11:49
Thanks for repyly. I also applied all topics. But I didnt set contentsize because I give the last element constraint "greaterThanOrEqualTo" so I think no need the content size.
– codeByThey
Nov 16 '18 at 11:49
Unfortunately you can't have any
>=
heights if you want the scroll view to know the content size. If you really must have that then maybe set the content view height to match the safe area height, but then it kinda defeats the purpose of the scroll view...– Guy Kogus
Nov 17 '18 at 7:40
Unfortunately you can't have any
>=
heights if you want the scroll view to know the content size. If you really must have that then maybe set the content view height to match the safe area height, but then it kinda defeats the purpose of the scroll view...– Guy Kogus
Nov 17 '18 at 7:40
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53334387%2fuse-xib-with-scroll-view-swift%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown