The first childViewController.view.frame is wrong when it is added on a ASScrollNode
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
add a comment |
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
You did all wrong.. try learn UIKit UITableView examples.
– Bimawa
Dec 5 '18 at 10:55
add a comment |
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
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
asyncdisplaykit
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
add a comment |
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
add a comment |
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
);
);
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%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
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.
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%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
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
You did all wrong.. try learn UIKit UITableView examples.
– Bimawa
Dec 5 '18 at 10:55