UIScrollView Direction RTL for languages ​​from right to left

Can we change the behavior of UIScrollView so that it scrolls RTL content in reverse.

+5
source share
4 answers
count = 6;

[self.scrollView setFrame:CGRectMake(scrollView.frame.origin.x, scrollView.frame.origin.y, 320, 480)];

[pageControl setNumberOfPages:count];

self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * count, self.scrollView.frame.size.height);

for(int i=count-1; i>=0; i--) { //start adding content in reverse mode
    CGRect frame;
    frame.origin.x = self.scrollView.frame.size.width * (count - i - 1); //ar
    frame.origin.y = 0;
    frame.size = self.scrollView.frame.size;

    UIImageView *imageView = [[UIImageView alloc] initWithFrame:frame];
    [imageView setImage:[UIImage imageNamed:[NSString stringWithFormat:@"%i.png", i]]];

    [self.scrollView addSubview:imageView];
}

//scroll to the last frame as it the first page for RTL languages
CGRect frame;
frame.origin.x = scrollView.frame.size.width * (count - 1);
frame.origin.y = 0;
frame.size = scrollView.frame.size;
[self.scrollView scrollRectToVisible:frame animated:NO];

The page control should also indicate the last point as the first point (or first page)

- (void)scrollViewDidScroll:(UIScrollView *)sender {
// Update the page when more than 50% of the previous/next page is visible
CGFloat pageWidth = self.scrollView.frame.size.width;
int page = floor((self.scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1;
self.pageControl.currentPage = (page % count);
}
+4
source

You can achieve this by turning UIScrollViewChild views 180 (Pi).

self.scrollView.transform = CGAffineTransformMakeRotation(M_PI);
subView.transform =  CGAffineTransformMakeRotation(M_PI);
+13
source

, xCode 7 iOS 9 .

[self._imagesScrollView  setTransform:CGAffineTransformMakeScale(-1, 1)];
+3

, , : UIScrollView ( ), , , , , .

. contentOffset:

[scrollView setContentSize:CGSizeMake(self.childView.frame.size.width,
                                      scrollView.frame.size.height)]; 

childView, . scrollView 1. , :

[scrollView setContentOffset:CGPointMake(scrollView.contentOffset.x + kElementWidth,0.0)];

. :

self.videoQueueCollectionView.center = CGPointMake(self.childView.center.x + kElementWidth,
                                                   self.childView.center.y);

eveything , , contentOffset . , .

+1
source

All Articles