The first childViewController.view.frame is wrong when it is added on a ASScrollNode










0














class TAUniversityNode: ASDisplayNode 

lazy var navigationBarNode: TAUniversityNavigationBarNode =
let node = TAUniversityNavigationBarNode()
node.backgroundColor = UIColor.white
return node
()

lazy var headerNode: TAUniversityHeaderNode =
let node = TAUniversityHeaderNode()
node.backgroundColor = UIColor.white
return node
()

lazy var scrollNode: ASScrollNode =
let node = ASScrollNode()
node.view.delegate = self
node.view.bounces = true
node.view.isPagingEnabled = true
node.view.showsHorizontalScrollIndicator = false
node.view.showsVerticalScrollIndicator = false
if #available(iOS 11.0, *)
node.view.contentInsetAdjustmentBehavior = UIScrollView.ContentInsetAdjustmentBehavior.never

return node
()

var viewControllers = [TAUniversityChildVC]()

var tableViews = [ASTableView]()

var loadCategorys = [Int]()

var categorys = [String]()
didSet
headerNode.segmentsNode.tags = categorys
lastSegment = headerNode.segmentsNode.segments.first
lastSegment?.isSelected = true
scrollNode.view.contentSize = CGSize(width: CGFloat(categorys.count)*scrollNode.calculatedSize.width, height: 0.0)
scrollViewDidEndDecelerating(scrollNode.view)



var lastSegment: ASButtonNode?

override init()
super.init()
automaticallyManagesSubnodes = true



extension TAUniversityNode

override func layoutSpecThatFits(_ constrainedSize: ASSizeRange) -> ASLayoutSpec
navigationBarNode.style.height = ASDimensionMake(UIScreen.navigationBarHeight)
headerNode.style.height = ASDimensionMake(320.0)
let headerStack = ASStackLayoutSpec.vertical()
headerStack.children = [navigationBarNode, headerNode]
let overlay = ASOverlayLayoutSpec(child: scrollNode, overlay: headerStack)
return ASInsetLayoutSpec(insets: UIEdgeInsets(top: 0.0, left: 0.0, bottom: UIScreen.tabBarHeight, right: 0.0), child: overlay)



extension TAUniversityNode: UIScrollViewDelegate

func scrollViewDidEndDecelerating(_ scrollView: UIScrollView)

let index = Int(scrollView.contentOffset.x/scrollNode.calculatedSize.width)

if loadCategorys.contains(index) == false
let vc = TAUniversityChildVC(index)
vc.tableNode.frame = CGRect(x: CGFloat(index)*scrollNode.calculatedSize.width, y: 0.0, width: scrollNode.calculatedSize.width, height: scrollNode.calculatedSize.height)
scrollNode.addSubnode(vc.tableNode)
viewControllers.append(vc)
tableViews.append(vc.tableNode.view)
loadCategorys.append(index)





TAUniversityChildVC is a ASViewController which node is ASTableNode. But my first TAUniversityChildVC.tableNode just like this:enter image description here, and when I scroll scrollNode, the second TAUniversityChildVC.tableNode is added to scrollNode,and it's frame is normal



TAUniversityNode is TAUniversityVC's node like this:



class TAUniversityVC: ASViewController 

var categorys = [String]()

var universityNode: TAUniversityNode
return node as! TAUniversityNode


init()
super.init(node: TAUniversityNode())
automaticallyAdjustsScrollViewInsets = false


required init?(coder aDecoder: NSCoder)
fatalError("init(coder:) has not been implemented")



extension TAUniversityVC

override func viewDidLoad()
super.viewDidLoad()
setupInterwork()


func setupInterwork()
categorys.append(contentsOf: ["全部", "微课程", "文学历史", "健康生活", "文艺兴趣", "中医养生", "拳操健身", "中西烹饪"])
universityNode.categorys = categorys











share|improve this question























  • You did all wrong.. try learn UIKit UITableView examples.
    – Bimawa
    Dec 5 '18 at 10:55















0














class TAUniversityNode: ASDisplayNode 

lazy var navigationBarNode: TAUniversityNavigationBarNode =
let node = TAUniversityNavigationBarNode()
node.backgroundColor = UIColor.white
return node
()

lazy var headerNode: TAUniversityHeaderNode =
let node = TAUniversityHeaderNode()
node.backgroundColor = UIColor.white
return node
()

lazy var scrollNode: ASScrollNode =
let node = ASScrollNode()
node.view.delegate = self
node.view.bounces = true
node.view.isPagingEnabled = true
node.view.showsHorizontalScrollIndicator = false
node.view.showsVerticalScrollIndicator = false
if #available(iOS 11.0, *)
node.view.contentInsetAdjustmentBehavior = UIScrollView.ContentInsetAdjustmentBehavior.never

return node
()

var viewControllers = [TAUniversityChildVC]()

var tableViews = [ASTableView]()

var loadCategorys = [Int]()

var categorys = [String]()
didSet
headerNode.segmentsNode.tags = categorys
lastSegment = headerNode.segmentsNode.segments.first
lastSegment?.isSelected = true
scrollNode.view.contentSize = CGSize(width: CGFloat(categorys.count)*scrollNode.calculatedSize.width, height: 0.0)
scrollViewDidEndDecelerating(scrollNode.view)



var lastSegment: ASButtonNode?

override init()
super.init()
automaticallyManagesSubnodes = true



extension TAUniversityNode

override func layoutSpecThatFits(_ constrainedSize: ASSizeRange) -> ASLayoutSpec
navigationBarNode.style.height = ASDimensionMake(UIScreen.navigationBarHeight)
headerNode.style.height = ASDimensionMake(320.0)
let headerStack = ASStackLayoutSpec.vertical()
headerStack.children = [navigationBarNode, headerNode]
let overlay = ASOverlayLayoutSpec(child: scrollNode, overlay: headerStack)
return ASInsetLayoutSpec(insets: UIEdgeInsets(top: 0.0, left: 0.0, bottom: UIScreen.tabBarHeight, right: 0.0), child: overlay)



extension TAUniversityNode: UIScrollViewDelegate

func scrollViewDidEndDecelerating(_ scrollView: UIScrollView)

let index = Int(scrollView.contentOffset.x/scrollNode.calculatedSize.width)

if loadCategorys.contains(index) == false
let vc = TAUniversityChildVC(index)
vc.tableNode.frame = CGRect(x: CGFloat(index)*scrollNode.calculatedSize.width, y: 0.0, width: scrollNode.calculatedSize.width, height: scrollNode.calculatedSize.height)
scrollNode.addSubnode(vc.tableNode)
viewControllers.append(vc)
tableViews.append(vc.tableNode.view)
loadCategorys.append(index)





TAUniversityChildVC is a ASViewController which node is ASTableNode. But my first TAUniversityChildVC.tableNode just like this:enter image description here, and when I scroll scrollNode, the second TAUniversityChildVC.tableNode is added to scrollNode,and it's frame is normal



TAUniversityNode is TAUniversityVC's node like this:



class TAUniversityVC: ASViewController 

var categorys = [String]()

var universityNode: TAUniversityNode
return node as! TAUniversityNode


init()
super.init(node: TAUniversityNode())
automaticallyAdjustsScrollViewInsets = false


required init?(coder aDecoder: NSCoder)
fatalError("init(coder:) has not been implemented")



extension TAUniversityVC

override func viewDidLoad()
super.viewDidLoad()
setupInterwork()


func setupInterwork()
categorys.append(contentsOf: ["全部", "微课程", "文学历史", "健康生活", "文艺兴趣", "中医养生", "拳操健身", "中西烹饪"])
universityNode.categorys = categorys











share|improve this question























  • You did all wrong.. try learn UIKit UITableView examples.
    – Bimawa
    Dec 5 '18 at 10:55













0












0








0







class TAUniversityNode: ASDisplayNode 

lazy var navigationBarNode: TAUniversityNavigationBarNode =
let node = TAUniversityNavigationBarNode()
node.backgroundColor = UIColor.white
return node
()

lazy var headerNode: TAUniversityHeaderNode =
let node = TAUniversityHeaderNode()
node.backgroundColor = UIColor.white
return node
()

lazy var scrollNode: ASScrollNode =
let node = ASScrollNode()
node.view.delegate = self
node.view.bounces = true
node.view.isPagingEnabled = true
node.view.showsHorizontalScrollIndicator = false
node.view.showsVerticalScrollIndicator = false
if #available(iOS 11.0, *)
node.view.contentInsetAdjustmentBehavior = UIScrollView.ContentInsetAdjustmentBehavior.never

return node
()

var viewControllers = [TAUniversityChildVC]()

var tableViews = [ASTableView]()

var loadCategorys = [Int]()

var categorys = [String]()
didSet
headerNode.segmentsNode.tags = categorys
lastSegment = headerNode.segmentsNode.segments.first
lastSegment?.isSelected = true
scrollNode.view.contentSize = CGSize(width: CGFloat(categorys.count)*scrollNode.calculatedSize.width, height: 0.0)
scrollViewDidEndDecelerating(scrollNode.view)



var lastSegment: ASButtonNode?

override init()
super.init()
automaticallyManagesSubnodes = true



extension TAUniversityNode

override func layoutSpecThatFits(_ constrainedSize: ASSizeRange) -> ASLayoutSpec
navigationBarNode.style.height = ASDimensionMake(UIScreen.navigationBarHeight)
headerNode.style.height = ASDimensionMake(320.0)
let headerStack = ASStackLayoutSpec.vertical()
headerStack.children = [navigationBarNode, headerNode]
let overlay = ASOverlayLayoutSpec(child: scrollNode, overlay: headerStack)
return ASInsetLayoutSpec(insets: UIEdgeInsets(top: 0.0, left: 0.0, bottom: UIScreen.tabBarHeight, right: 0.0), child: overlay)



extension TAUniversityNode: UIScrollViewDelegate

func scrollViewDidEndDecelerating(_ scrollView: UIScrollView)

let index = Int(scrollView.contentOffset.x/scrollNode.calculatedSize.width)

if loadCategorys.contains(index) == false
let vc = TAUniversityChildVC(index)
vc.tableNode.frame = CGRect(x: CGFloat(index)*scrollNode.calculatedSize.width, y: 0.0, width: scrollNode.calculatedSize.width, height: scrollNode.calculatedSize.height)
scrollNode.addSubnode(vc.tableNode)
viewControllers.append(vc)
tableViews.append(vc.tableNode.view)
loadCategorys.append(index)





TAUniversityChildVC is a ASViewController which node is ASTableNode. But my first TAUniversityChildVC.tableNode just like this:enter image description here, and when I scroll scrollNode, the second TAUniversityChildVC.tableNode is added to scrollNode,and it's frame is normal



TAUniversityNode is TAUniversityVC's node like this:



class TAUniversityVC: ASViewController 

var categorys = [String]()

var universityNode: TAUniversityNode
return node as! TAUniversityNode


init()
super.init(node: TAUniversityNode())
automaticallyAdjustsScrollViewInsets = false


required init?(coder aDecoder: NSCoder)
fatalError("init(coder:) has not been implemented")



extension TAUniversityVC

override func viewDidLoad()
super.viewDidLoad()
setupInterwork()


func setupInterwork()
categorys.append(contentsOf: ["全部", "微课程", "文学历史", "健康生活", "文艺兴趣", "中医养生", "拳操健身", "中西烹饪"])
universityNode.categorys = categorys











share|improve this question















class TAUniversityNode: ASDisplayNode 

lazy var navigationBarNode: TAUniversityNavigationBarNode =
let node = TAUniversityNavigationBarNode()
node.backgroundColor = UIColor.white
return node
()

lazy var headerNode: TAUniversityHeaderNode =
let node = TAUniversityHeaderNode()
node.backgroundColor = UIColor.white
return node
()

lazy var scrollNode: ASScrollNode =
let node = ASScrollNode()
node.view.delegate = self
node.view.bounces = true
node.view.isPagingEnabled = true
node.view.showsHorizontalScrollIndicator = false
node.view.showsVerticalScrollIndicator = false
if #available(iOS 11.0, *)
node.view.contentInsetAdjustmentBehavior = UIScrollView.ContentInsetAdjustmentBehavior.never

return node
()

var viewControllers = [TAUniversityChildVC]()

var tableViews = [ASTableView]()

var loadCategorys = [Int]()

var categorys = [String]()
didSet
headerNode.segmentsNode.tags = categorys
lastSegment = headerNode.segmentsNode.segments.first
lastSegment?.isSelected = true
scrollNode.view.contentSize = CGSize(width: CGFloat(categorys.count)*scrollNode.calculatedSize.width, height: 0.0)
scrollViewDidEndDecelerating(scrollNode.view)



var lastSegment: ASButtonNode?

override init()
super.init()
automaticallyManagesSubnodes = true



extension TAUniversityNode

override func layoutSpecThatFits(_ constrainedSize: ASSizeRange) -> ASLayoutSpec
navigationBarNode.style.height = ASDimensionMake(UIScreen.navigationBarHeight)
headerNode.style.height = ASDimensionMake(320.0)
let headerStack = ASStackLayoutSpec.vertical()
headerStack.children = [navigationBarNode, headerNode]
let overlay = ASOverlayLayoutSpec(child: scrollNode, overlay: headerStack)
return ASInsetLayoutSpec(insets: UIEdgeInsets(top: 0.0, left: 0.0, bottom: UIScreen.tabBarHeight, right: 0.0), child: overlay)



extension TAUniversityNode: UIScrollViewDelegate

func scrollViewDidEndDecelerating(_ scrollView: UIScrollView)

let index = Int(scrollView.contentOffset.x/scrollNode.calculatedSize.width)

if loadCategorys.contains(index) == false
let vc = TAUniversityChildVC(index)
vc.tableNode.frame = CGRect(x: CGFloat(index)*scrollNode.calculatedSize.width, y: 0.0, width: scrollNode.calculatedSize.width, height: scrollNode.calculatedSize.height)
scrollNode.addSubnode(vc.tableNode)
viewControllers.append(vc)
tableViews.append(vc.tableNode.view)
loadCategorys.append(index)





TAUniversityChildVC is a ASViewController which node is ASTableNode. But my first TAUniversityChildVC.tableNode just like this:enter image description here, and when I scroll scrollNode, the second TAUniversityChildVC.tableNode is added to scrollNode,and it's frame is normal



TAUniversityNode is TAUniversityVC's node like this:



class TAUniversityVC: ASViewController 

var categorys = [String]()

var universityNode: TAUniversityNode
return node as! TAUniversityNode


init()
super.init(node: TAUniversityNode())
automaticallyAdjustsScrollViewInsets = false


required init?(coder aDecoder: NSCoder)
fatalError("init(coder:) has not been implemented")



extension TAUniversityVC

override func viewDidLoad()
super.viewDidLoad()
setupInterwork()


func setupInterwork()
categorys.append(contentsOf: ["全部", "微课程", "文学历史", "健康生活", "文艺兴趣", "中医养生", "拳操健身", "中西烹饪"])
universityNode.categorys = categorys








asyncdisplaykit






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 13 '18 at 5:16









Robert

2,15062435




2,15062435










asked Nov 13 '18 at 1:02









zhengzhengzhengzheng

12




12











  • You did all wrong.. try learn UIKit UITableView examples.
    – Bimawa
    Dec 5 '18 at 10:55
















  • You did all wrong.. try learn UIKit UITableView examples.
    – Bimawa
    Dec 5 '18 at 10:55















You did all wrong.. try learn UIKit UITableView examples.
– Bimawa
Dec 5 '18 at 10:55




You did all wrong.. try learn UIKit UITableView examples.
– Bimawa
Dec 5 '18 at 10:55












0






active

oldest

votes











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
);



);













draft saved

draft discarded


















StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53272283%2fthe-first-childviewcontroller-view-frame-is-wrong-when-it-is-added-on-a-asscroll%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes















draft saved

draft discarded
















































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.





Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


Please pay close attention to the following guidance:


  • 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.




draft saved


draft discarded














StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53272283%2fthe-first-childviewcontroller-view-frame-is-wrong-when-it-is-added-on-a-asscroll%23new-answer', 'question_page');

);

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







Popular posts from this blog

27

Top Tejano songwriter Luis Silva dead of heart attack at 64

Category:Rhetoric