Eit*_*tan 5 uiscrollview right-to-left ios autolayout nslayoutconstraint
我有一个水平滚动视图,我可以在其中动态添加视图。在 LTR 语言上一切正常,我从左到右一个接一个地添加视图。在 RTL 上,问题是视图总是添加到滚动的左侧而不是像其他控制器一样添加到右侧,视图顺序正确添加的真正奇怪的工作人员,在第一个视图的左侧,所以他们从右到左排序,但在 -x 上的滚动视图之外。
这是我添加新视图时的代码:
Tag* tag = [self.storyboard instantiateViewControllerWithIdentifier:@"tag" ];
[_scroller addSubview:tag.view];
[tags addObject:tag];
Tag* prev = nil
for (Tag* tag in tags)
{
if (prev == nil)
{
[_scroller addConstraint:[NSLayoutConstraint constraintWithItem:tag.view
attribute:NSLayoutAttributeLeading
relatedBy:NSLayoutRelationEqual
toItem:_scroller
attribute:NSLayoutAttributeLeading
multiplier:1.0f
constant:0]];
}
else
{
[_scroller addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"[prev]-10-[tag]"
options:0
metrics:nil
views:@{@"tag" : tag.view, @"prev" : prev.view}]];
}
[_scroller addConstraint:[NSLayoutConstraint constraintWithItem:tag.view
attribute:NSLayoutAttributeCenterY
relatedBy:NSLayoutRelationEqual
toItem:_scroller
attribute:NSLayoutAttributeCenterY
multiplier:1.0f
constant:0]];
prev = tag;
}
Run Code Online (Sandbox Code Playgroud)
这是它如何在 LTR 和 RTL 上工作以及它如何实际工作的图像

听起来更好的方法可能是使用UICollectionView. 然后,如果你想从右侧开始,你可以这样做:
NSIndexPath *lastIndex = [NSIndexPath indexPathForItem:data.count - 1
inSection:0];
[self.collectionView scrollToItemAtIndexPath:lastIndex
atScrollPosition:UICollectionViewScrollPositionRight
animated:NO];
Run Code Online (Sandbox Code Playgroud)
这样他们UICollectionViewFlowLayout就可以为您处理安置事宜。
| 归档时间: |
|
| 查看次数: |
1151 次 |
| 最近记录: |