动画

iOS 界面适配右到左语言

2017-12-13  本文已影响85人  清风沐沐

方向判断

#pragma mark 当前是否从右到左
+ (BOOL)isRightToLeftLanuage
{
    if ([UIApplication sharedApplication].userInterfaceLayoutDirection == UIUserInterfaceLayoutDirectionRightToLeft) {
        return YES;
    }
    
    return NO;
}

1.自动布局.

建议使用自动布局,并且使用Leading和trailing,不建议使用left和right;

2.文本对其

建议使用NSTextAlignmentNatural的文本对其方式!(居中对其除外), ios 8默认是NSTextAlignmentLeft, ios9 默认NSTextAlignmentNatural

3.富文本

attribute建议使用NSMutableParagraphStyle,并设置为NSTextAlignmentNatural;

NSMutableParagraphStyle *mulParagraphStyle = [[NSMutableParagraphStyle alloc] init];
[mulParagraphStyle setAlignment:NSTextAlignmentNatural];
[mutableAttributedString addAttribute:NSParagraphStyleAttributeName value:mulParagraphStyle range:NSMakeRange(0, model.itemDetailName.length)];

4.图片强制翻转,图片是有方向性的

最具代表性的是cell箭头需要强制性翻转;

// UIImage的翻转
if (version >= ios9) {
    [image imageFlippedForRightToLeftLayoutDirection];
}  else {
    UIImage *flipImage = [UIImage imageWithCGImage:image.CGImage scale:image.scale orientation:UIImageOrientationUpMirrored];
}

5. Leading 和 AlignCenterY

Leading和AlignCenterY不要同时使用. 上次在改一处问题的时候,发现Leading和AlignCenterY一起使用会不显示的问题。

6.如果代码使用frame,没有使用约束,但是又想快速解决适配的问题

使用翻转可以快速解决你的问题 左到右-->右到左翻转180度,但是这个view不应该有文字信息,否则文字显示是错误的

//给view扩展方法
self.transform = CGAffineTransformMakeScale(-1.0, 1.0);
上一篇 下一篇

猜你喜欢

热点阅读