From 94925e301b4162e9c548e54a148ac01f494e1172 Mon Sep 17 00:00:00 2001 From: Max Sokolov Date: Wed, 25 May 2016 21:47:14 +0300 Subject: [PATCH] try preheat --- .../UserInterfaceState.xcuserstate | Bin 13496 -> 18832 bytes Tablet/TableRowBuilder.swift | 52 +++++++++++++----- .../Views/StoryboardImageTableViewCell.swift | 2 +- .../TabletDemo.xcodeproj/project.pbxproj | 12 ++-- 4 files changed, 46 insertions(+), 20 deletions(-) diff --git a/Tablet.xcworkspace/xcuserdata/max.xcuserdatad/UserInterfaceState.xcuserstate b/Tablet.xcworkspace/xcuserdata/max.xcuserdatad/UserInterfaceState.xcuserstate index 6ab9c7e2f769abd248e639a893a741926d5c42b0..bb497d2bd25cc669c22a1cf2a053676b4919f68c 100644 GIT binary patch literal 18832 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%0AD`f$6bz0Kineo=de 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 delta 7993 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 z CGFloat { return UITableViewAutomaticDimension } + + func heightCall(item: DataType, width: CGFloat) -> CGFloat { + + guard let cell = prototypeCell else { return 0 } + + cell.bounds = CGRectMake(0, 0, width, cell.bounds.height) + + cell.configure(item) + + cell.setNeedsLayout() + cell.layoutIfNeeded() + + return cell.contentView.systemLayoutSizeFittingSize(UILayoutFittingCompressedSize).height + 1 + } + + // прехит по мере скроллинга в бэк + // прехит не должен прехитить то что уже есть (показанное) + // по мере скроллинга уметь отменять перхит () public override func rowHeight(index: Int) -> CGFloat { @@ -172,22 +190,11 @@ public class TablePrototypeRowBuilder AnyObject? { if case .configure = action { diff --git a/TabletDemo/Classes/Presentation/Views/StoryboardImageTableViewCell.swift b/TabletDemo/Classes/Presentation/Views/StoryboardImageTableViewCell.swift index 5a848f6..498d200 100644 --- a/TabletDemo/Classes/Presentation/Views/StoryboardImageTableViewCell.swift +++ b/TabletDemo/Classes/Presentation/Views/StoryboardImageTableViewCell.swift @@ -30,7 +30,7 @@ class StoryboardImageTableViewCell: UITableViewCell, ConfigurableCell { override func layoutSubviews() { super.layoutSubviews() - //contentView.layoutIfNeeded() + contentView.layoutIfNeeded() subtitleLabel.preferredMaxLayoutWidth = subtitleLabel.bounds.size.width } diff --git a/TabletDemo/TabletDemo.xcodeproj/project.pbxproj b/TabletDemo/TabletDemo.xcodeproj/project.pbxproj index 0a8c7bf..5b1d76e 100644 --- a/TabletDemo/TabletDemo.xcodeproj/project.pbxproj +++ b/TabletDemo/TabletDemo.xcodeproj/project.pbxproj @@ -7,9 +7,9 @@ objects = { /* Begin PBXBuildFile section */ + 5058386B1CF6189D00224C58 /* Tablet.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5058386A1CF6189D00224C58 /* Tablet.framework */; }; + 5058386C1CF6189D00224C58 /* Tablet.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 5058386A1CF6189D00224C58 /* Tablet.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; DA08A0531CF4E9B500BBF1F8 /* StoryboardImageTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA08A0521CF4E9B500BBF1F8 /* StoryboardImageTableViewCell.swift */; }; - DA539C901CF50E9900368ACB /* Tablet.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA539C8F1CF50E9900368ACB /* Tablet.framework */; }; - DA539C911CF50E9900368ACB /* Tablet.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = DA539C8F1CF50E9900368ACB /* Tablet.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; DAC2D5CA1C9D303E009E9C19 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = DAC2D5C91C9D303E009E9C19 /* AppDelegate.swift */; }; DAC2D5CF1C9D30A7009E9C19 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DAC2D5CD1C9D30A7009E9C19 /* Main.storyboard */; }; DAC2D5D01C9D30A7009E9C19 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DAC2D5CE1C9D30A7009E9C19 /* LaunchScreen.storyboard */; }; @@ -26,7 +26,7 @@ dstPath = ""; dstSubfolderSpec = 10; files = ( - DA539C911CF50E9900368ACB /* Tablet.framework in Embed Frameworks */, + 5058386C1CF6189D00224C58 /* Tablet.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -34,8 +34,8 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 5058386A1CF6189D00224C58 /* Tablet.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; name = Tablet.framework; path = "/Users/max/Library/Developer/Xcode/DerivedData/Tablet-bomgsgklcxthxkeamvdbfmrhqnno/Build/Products/Debug-iphonesimulator/Tablet.framework"; sourceTree = ""; }; DA08A0521CF4E9B500BBF1F8 /* StoryboardImageTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StoryboardImageTableViewCell.swift; sourceTree = ""; }; - DA539C8F1CF50E9900368ACB /* Tablet.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; name = Tablet.framework; path = "/Users/maxsokolov/Library/Developer/Xcode/DerivedData/Tablet-hgommdyxtgxijceamltarpblrbwc/Build/Products/Debug-iphoneos/Tablet.framework"; sourceTree = ""; }; DAB7EB271BEF787300D2AD5E /* TabletDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = TabletDemo.app; sourceTree = BUILT_PRODUCTS_DIR; }; DAC2D5C91C9D303E009E9C19 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; DAC2D5CD1C9D30A7009E9C19 /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Main.storyboard; sourceTree = ""; }; @@ -52,7 +52,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - DA539C901CF50E9900368ACB /* Tablet.framework in Frameworks */, + 5058386B1CF6189D00224C58 /* Tablet.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -69,7 +69,7 @@ DAB7EB1E1BEF787300D2AD5E = { isa = PBXGroup; children = ( - DA539C8F1CF50E9900368ACB /* Tablet.framework */, + 5058386A1CF6189D00224C58 /* Tablet.framework */, DAC2D5C61C9D2FE5009E9C19 /* Classes */, DAC2D5CB1C9D3058009E9C19 /* Resources */, DA539C871CF50B1800368ACB /* Frameworks */,