From 6d677e928ccb385d6ee28126ad14a1c8ea1e9134 Mon Sep 17 00:00:00 2001 From: Alberto Paladino Date: Fri, 29 Nov 2019 11:57:52 +0100 Subject: [PATCH] Added optional parameter that specify right offset for the searchBar from the main view --- .../Classes/Models/DataTableConfiguration.swift | 1 + .../Protocols/SwiftDataTableDataSourceAndDelegate.swift | 5 +++++ SwiftDataTables/Classes/SwiftDataTable.swift | 9 ++++++++- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/SwiftDataTables/Classes/Models/DataTableConfiguration.swift b/SwiftDataTables/Classes/Models/DataTableConfiguration.swift index 61bf3b7..9dc094f 100755 --- a/SwiftDataTables/Classes/Models/DataTableConfiguration.swift +++ b/SwiftDataTables/Classes/Models/DataTableConfiguration.swift @@ -23,6 +23,7 @@ public struct DataTableConfiguration: Equatable { public var heightForSectionFooter: CGFloat = 44 public var heightForSectionHeader: CGFloat = 44 public var heightForSearchView: CGFloat = 60 + public var rightOffsetForSearchView: CGFloat = 0 public var heightOfInterRowSpacing: CGFloat = 1 public var shouldShowFooter: Bool = true diff --git a/SwiftDataTables/Classes/Protocols/SwiftDataTableDataSourceAndDelegate.swift b/SwiftDataTables/Classes/Protocols/SwiftDataTableDataSourceAndDelegate.swift index 97ae97e..e9f6cb2 100644 --- a/SwiftDataTables/Classes/Protocols/SwiftDataTableDataSourceAndDelegate.swift +++ b/SwiftDataTables/Classes/Protocols/SwiftDataTableDataSourceAndDelegate.swift @@ -129,6 +129,11 @@ public protocol SwiftDataTableDataSource: class { /// - Returns: the height of the search view @objc optional func heightForSearchView(in dataTable: SwiftDataTable) -> CGFloat + /// The right offset of the search view from the right. Defaults to 0. + /// + /// - Parameter dataTable: SwiftDataTable + /// - Returns: the right offset of the search view from the right + @objc optional func rightOffsetForSearchView(in dataTable: SwiftDataTable) -> CGFloat /// Height of the inter row spacing. Defaults to 1. /// diff --git a/SwiftDataTables/Classes/SwiftDataTable.swift b/SwiftDataTables/Classes/SwiftDataTable.swift index 47430cd..210c31f 100755 --- a/SwiftDataTables/Classes/SwiftDataTable.swift +++ b/SwiftDataTables/Classes/SwiftDataTable.swift @@ -189,7 +189,7 @@ public class SwiftDataTable: UIView { public override func layoutSubviews() { super.layoutSubviews() let searchBarHeight = self.heightForSearchView() - self.searchBar.frame = CGRect(x: 0, y: 0, width: self.bounds.width, height: searchBarHeight) + self.searchBar.frame = CGRect(x: 0, y: 0, width: self.bounds.width - self.rightOffsetForSearchView(), height: searchBarHeight) self.collectionView.frame = CGRect(x: 0, y: searchBarHeight, width: self.bounds.width, height: self.bounds.height-searchBarHeight) } @@ -659,6 +659,13 @@ extension SwiftDataTable { return self.delegate?.heightForSearchView?(in: self) ?? self.options.heightForSearchView } + func rightOffsetForSearchView() -> CGFloat { + guard self.shouldShowSearchSection() else { + return 0 + } + return self.delegate?.rightOffsetForSearchView?(in: self) ?? self.options.rightOffsetForSearchView + } + func showVerticalScrollBars() -> Bool { return self.delegate?.shouldShowVerticalScrollBars?(in: self) ?? self.options.shouldShowVerticalScrollBars }