MDF国际化 3.0.0

MDF国际化 3.0.0

测试已测试
语言语言 Obj-CObjective C
许可证 Apache-2.0
发布最新发布2021年5月

Ian GordonIan GordonJeff VerkoeyenRobert Moore 维护。



  • 材料基金会作者

MDF国际化

MDF国际化帮助您国际化iOS应用程序或组件的用户界面。

License GitHub release Build Status CocoaPods Compatible Carthage compatible

CGRects和UIEdgeInsets的从右向左计算

UIView的位置是其superview中的frame(CGRect),包含一个原点和大小。当一个设备设置为从右到左(RTL)的语言时,我们通常希望沿垂直轴镜像界面。这个库包含用于修改框架和边距以便RTL的功能。

// To flip a subview's frame horizontally, pass in subview.frame and the width of its parent.
CGRect originalFrame = childView.frame;
CGRect flippedFrame = MDFRectFlippedHorizontally(originalFrame, CGRectGetWidth(self.bounds));
childView.frame = flippedFrame;

镜像图像

在UIImage上创建了一个类别,将该iOS 10的[UIImage imageWithHorizontallyFlippedOrientation]功能回滚到iOS的早期版本。

// To mirror on image, invoke mdf_imageWithHorizontallyFlippedOrientation.
UIImage *mirroredImage = [originalImage mdf_imageWithHorizontallyFlippedOrientation];

添加语义上下文

UIView类别将iOS 9的-[UIView semanticContentAttribute]和iOS 10的-[UIView effectiveUserInterfaceLayoutDirection]应用于早期版本的iOS。

// To set a semantic content attribute, set the mdf_semanticContentAttribute property.
lockedLTRView.mdf_semanticContentAttribute = UISemanticContentAttributeForceLeftToRight;

// mdf_semanticContentAttribute is used to calculate the mdf_effectiveUserInterfaceLayoutDirection
if (customView.mdf_effectiveUserInterfaceLayoutDirection == UIUserInterfaceLayoutDirectionRightToLeft) {
  // Update customView's layout to be in RTL mode.
}

嵌入双向字符串

NSString类别提供了一个简单的API,可以将字符串封装在Unicode标记中,以便在同一个字符串中存在LTR和RTL文本。

// To embed an RTL string in an existing LTR string we should wrap it in Unicode directionality
// markers to  maintain preoper rendering.

// The name of a restaurant is in Arabic (RTL), but the rest of string is in Latin (LTR).
NSString *wrappedRestaurantName =
    [restaurantName mdf_stringWithStereoReset:NSLocaleLanguageDirectionRightToLeft
                                      context:NSLocaleLanguageDirectionLeftToRight];

NSString *reservationString = [NSString stringWithFormat:@"%@ : %ld", wrappedRestaurantName, attendees];

用法

请参阅Examples/Flags以了解如何使用此库提供的功能的详细示例。

许可

MDFInternationalization按照Apache License Version 2.0授权。