Comments (2)
First of all, I'm too lazy to make commit sorry. ¯_(ツ)_/¯
In case someone will search for the solution, here it is:
Add these to extension CalendarDateRangePickerViewController:
func isCellBlank(at indexPath: IndexPath) -> Bool {
let blankItems = getWeekday(date: getFirstDateForSection(section: indexPath.section)) - 1
if indexPath.item >= 7 && indexPath.item < 7 + blankItems {
return true
}
return false
}
func isWeekDayLabel(at indexPath: IndexPath) -> Bool {
if indexPath.item < 7{
return true
}
return false
}
func isDayItem(at indexPath: IndexPath) -> Bool {
if !isCellBlank(at: indexPath) && !isWeekDayLabel(at: indexPath){
return true
}
return false
}
func isDaySelected(at indexPath: IndexPath) -> Bool {
let blankItems = getWeekday(date: getFirstDateForSection(section: indexPath.section)) - 1
let dayOfMonth = indexPath.item - (7 + blankItems) + 1
let date = getDate(dayOfMonth: dayOfMonth, section: indexPath.section)
if selectedStartDate != nil && selectedEndDate != nil && isBefore(dateA: selectedStartDate!, dateB: date) && isBefore(dateA: date, dateB: selectedEndDate!) {
return true
} else if selectedStartDate != nil && areSameDay(dateA: date, dateB: selectedStartDate!) {
return true
} else if selectedEndDate != nil && areSameDay(dateA: date, dateB: selectedEndDate!) {
return true
}
return false
}
Change following methods in same extension to:
override public func numberOfSections(in collectionView: UICollectionView) -> Int {
return numberOfSections()
}
public func numberOfSections() -> Int {
let difference = Calendar.current.dateComponents([.month], from: minimumDate, to: maximumDate)
if difference.month! == 0 && Calendar.current.dateComponents([.month], from: minimumDate).month != Calendar.current.dateComponents([.month], from: maximumDate).month {
return 2
}
return difference.month! + 1
}
override public func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return numberOfItemsInSection(section: section)
}
public func numberOfItemsInSection(section: Int) -> Int {
let firstDateForSection = getFirstDateForSection(section: section)
let weekdayRowItems = 7
let blankItems = getWeekday(date: firstDateForSection) - 1
let daysInMonth = getNumberOfDaysInMonth(date: firstDateForSection)
return weekdayRowItems + blankItems + daysInMonth
}
Add these to extension CalendarDateRangePickerViewController:
public func scrollToSelection(){
let sections = numberOfSections()
for section in 0..<sections {
let items = numberOfItemsInSection(section: section)
for item in 0..<items {
let indexPath = IndexPath(item: item, section: section)
if isDayItem(at: indexPath) && isDaySelected(at: indexPath) {
collectionView.scrollToItem(at: indexPath, at: UICollectionView.ScrollPosition.centeredVertically, animated: false)
return
}
}
}
}
Add these to class CalendarDateRangePickerViewController
public var showSelectionOnStart = false
override public func viewWillAppear(_ animated: Bool) {
if showSelectionOnStart {
scrollToSelection()
}
}
from calendardaterangepickerviewcontroller.
Successfully implemented with the help of above code... but if we set minimum date = -100 years and maximum date as +100 years from now, then it is taking around 2-3 seconds to set the date.
from calendardaterangepickerviewcontroller.
Related Issues (20)
- remove space between two selected date
- dates selection
- just some fixes
- Reset Selected Dates
- Localize Calendar according to Countries (For ex spanish,Portugese)
- Current date to previous one i need to displaying but when appearing first time it is not showing current day and month ?
- Select Single Date HOT 5
- feature: add change locale
- UI alignment issue in 4 inch screen device iPhone 5s iPhone SE
- White color when button is selected
- Not able to set additional options to override the defaults HOT 1
- How to change the first day of the week HOT 2
- Allow same date selection for From Date and To Date HOT 3
- Crash Issue HOT 2
- No option for highlighting today in calendar
- Horizontal scrolling
- How to change start date and end date?
- How to scroll to specific/selected date? HOT 5
- Swift 5 support HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from calendardaterangepickerviewcontroller.