【发布时间】:2014-04-13 05:22:21
【问题描述】:
我有一个水平滚动视图,我在其上动态添加视图。 在 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;
}
这是它假设如何在 LTR 和 RTL 上工作以及它实际上是如何工作的图片
【问题讨论】:
-
你的问题是 LTR 视图应该是 LTR 而 RTL 视图应该是 RTL...但是对于 RTL 你得到 LTR 视图是这个问题吗?
-
不,它是混合的,当我在 RTL 上时,添加的视图(标签)被镜像并且它们是 RTL。视图的顺序也是 RTL,第二个留给第一个,依此类推。但 contentView 是 LTR,它从滚动视图的左边缘开始,距离更远。 [[tag3][tag2][tag1](scrollview的左边缘)--------(scrollview的右边缘)]
-
您是否尝试过在这种情况下反转数组(假设原始为 1 2 3 使其显示为 3 2 1 )
-
是的,我做到了,它没有得到我想要的结果。它从滚动视图的左边缘开始向右,应该是第一个视图在滚动视图的中间,它应该在右边并从那里开始到左边。
-
你能把粗略的屏幕显示成你想要的样子吗
标签: ios uiscrollview autolayout right-to-left nslayoutconstraint