MDF国际化
MDF国际化帮助您国际化iOS应用程序或组件的用户界面。
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授权。