如何本地化Autolayout Constraint在swift中以编程方式添加

时间:2015-11-18 07:55:27

标签: xcode swift localization nslayoutconstraint nsautolayout

在我的swift代码中,我正在使用autolayout约束。一些是直接从故事板添加的,一些是在UIScrollView上以编程方式添加的。

当应用程序以阿拉伯语版本(RTL方向)运行时,从故事板添加的自动布局约束会自动切换到RTL方向,而不会做任何努力但是在UIScrollView上以编程方式添加的那些不会被翻转。

这是我在UISCrollView上添加约束的示例:

declare @tbl table(id int, NAME varchar(100),  MACHINE  varchar(100), SUPERVISOR varchar(100),  LAST_UPDATE datetime)

insert @tbl (id, NAME,  MACHINE, SUPERVISOR,  LAST_UPDATE)
values(1, 'NAME_1',  'T_001','SUP_1','20151014 09:55:26.637'),
(2,'NAME_2','T_002','SUP_2','20151014 11:54:07.087'),
(3,'NAME_2','T_002','SUP_3','20151014 12:02:31.663'),
(4,'NAME_3','T_003','SUP_4','20151014 22:53:28.253'),
(5,'NAME_4','T_005','SUP_4','20151014 09:55:47.293'),
(6,'NAME_3','T_003','SUP_3','20151015 01:59:00.000'),
(7,'NAME_3','T_003','SUP_3','20151015 10:19:00.000')


    select *,DATEADD(HOUR,9,CAST(CAST(t1.LAST_UPDATE as date) as datetime)), DATEADD(HOUR,33,CAST(CAST(t1.LAST_UPDATE as date) as datetime))
    from @tbl t1
    where not exists(select *
                     from @tbl t2
                     where t2.id<>t1.id
                           and t2.NAME=t1.NAME
                           and t2.MACHINE=t1.MACHINE
                           and t2.LAST_UPDATE>=t1.LAST_UPDATE
                           and t2.LAST_UPDATE>=DATEADD(HOUR,9,CAST(CAST(CASE WHEN DATEPART(HOUR,t1.LAST_UPDATE)>9 THEN t1.LAST_UPDATE ELSE DATEADD(DAY,-1,t1.LAST_UPDATE) END as date) as datetime))
                           and t2.LAST_UPDATE<DATEADD(HOUR,33,CAST(CAST(CASE WHEN DATEPART(HOUR,t1.LAST_UPDATE)>9 THEN t1.LAST_UPDATE ELSE DATEADD(DAY,-1,t1.LAST_UPDATE) END as date) as datetime))
                     )

我的代码中是否有任何遗漏?或者我应该检查语言并手动翻转约束?

由于

1 个答案:

答案 0 :(得分:4)

您应该使用.Leading代替.Left.Trailing而不是.Right来处理应该改变语言方向的方向。这是.Leading.Trailing的全部目的。