方向判断
#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);
- 如果是UIScrollView, 手势事件也是会翻转过来的,不用另外处理了
- 如果是UIImageView,UIImage还是需要单独修改方向,UIImage的方向是翻转不过来的
- 如果是UIView的touch方法,获取的坐标还是之前的坐标,需要拿frame处理一下
ABS(self.bounds.size.width - touchPointX);