Skip to content

Commit 5831f14

Browse files
authored
RTL support (#9)
1 parent d2d79e1 commit 5831f14

2 files changed

Lines changed: 17 additions & 7 deletions

File tree

Classes/ASSingleWeekView.m

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,11 +68,19 @@ - (void)rebuildView
6868
UIView *subview = self.subviews[index];
6969
[subview removeFromSuperview];
7070
}
71-
CGFloat widthPerItem = CGRectGetWidth(self.frame) / 7;
71+
CGFloat totalWidth = CGRectGetWidth(self.frame);
72+
CGFloat widthPerItem = totalWidth / 7;
7273
CGFloat itemHeight = CGRectGetHeight(self.frame);
7374
for (NSUInteger dayIndex = 0; dayIndex < 7; dayIndex++) {
7475
NSDate *date = [self dateByAddingDays:dayIndex toDate:self.startDate];
75-
CGRect frame = CGRectMake(dayIndex * widthPerItem, 0, widthPerItem, itemHeight);
76+
CGRect frame;
77+
if (self.effectiveUserInterfaceLayoutDirection == UIUserInterfaceLayoutDirectionLeftToRight) {
78+
frame = CGRectMake(dayIndex * widthPerItem, 0, widthPerItem, itemHeight);
79+
} else {
80+
frame = CGRectMake(totalWidth - dayIndex * widthPerItem - widthPerItem, 0, widthPerItem, itemHeight);
81+
}
82+
83+
7684
UIView *view = [self.delegate singleWeekView:self
7785
viewForDate:date
7886
withFrame:frame];

Classes/ASWeekSelectorView.m

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,7 @@ - (void)scrollViewDidScroll:(UIScrollView *)scrollView
195195
CGRect leftFrame = week0.frame;
196196
CGRect middleFrame = week1.frame;
197197
CGRect rightFrame = week2.frame;
198+
NSInteger multiplier = self.effectiveUserInterfaceLayoutDirection == UIUserInterfaceLayoutDirectionLeftToRight ? 1 : -1;
198199

199200
if (offset.x <= 0) {
200201
// 0 and 1 move right
@@ -204,14 +205,14 @@ - (void)scrollViewDidScroll:(UIScrollView *)scrollView
204205
self.singleWeekViews[2] = week1;
205206

206207
// 2 get's updated to -1
207-
week2.startDate = [self dateByAddingDays:-7 toDate:week0.startDate];
208+
week2.startDate = [self dateByAddingDays:-7*multiplier toDate:week0.startDate];
208209
week2.frame = leftFrame;
209210
self.singleWeekViews[0] = week2;
210211

211212
if ([self.delegate respondsToSelector:@selector(weekSelectorDidSwipe:)]) {
212213
[self.delegate weekSelectorDidSwipe:self];
213214
}
214-
NSDate *date = [self dateByAddingDays:-7 toDate:self.selectedDate];
215+
NSDate *date = [self dateByAddingDays:-7*multiplier toDate:self.selectedDate];
215216
[self userWillSelectDate:date];
216217
[self userDidSelectDate:date];
217218

@@ -223,14 +224,14 @@ - (void)scrollViewDidScroll:(UIScrollView *)scrollView
223224
self.singleWeekViews[1] = week2;
224225

225226
// 0 get's updated to 3
226-
week0.startDate = [self dateByAddingDays:7 toDate:week2.startDate];
227+
week0.startDate = [self dateByAddingDays:7*multiplier toDate:week2.startDate];
227228
week0.frame = rightFrame;
228229
self.singleWeekViews[2] = week0;
229230

230231
if ([self.delegate respondsToSelector:@selector(weekSelectorDidSwipe:)]) {
231232
[self.delegate weekSelectorDidSwipe:self];
232233
}
233-
NSDate *date = [self dateByAddingDays:7 toDate:self.selectedDate];
234+
NSDate *date = [self dateByAddingDays:7*multiplier toDate:self.selectedDate];
234235
[self userWillSelectDate:date];
235236
[self userDidSelectDate:date];
236237
}
@@ -434,7 +435,8 @@ - (void)rebuildWeeks
434435

435436
// now we can build the #WEEKS subvies
436437
for (NSUInteger index = 0; index < WEEKS; index++) {
437-
CGRect frame = CGRectMake(index * width, 0, width, height);
438+
NSUInteger effectiveIndex = self.effectiveUserInterfaceLayoutDirection == UIUserInterfaceLayoutDirectionLeftToRight ? index : WEEKS - index - 1;
439+
CGRect frame = CGRectMake(effectiveIndex * width, 0, width, height);
438440
ASSingleWeekView *singleView = [[ASSingleWeekView alloc] initWithFrame:frame];
439441
singleView.delegate = self;
440442
singleView.startDate = date; // needs to be set AFTER delegate

0 commit comments

Comments
 (0)