You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Oct 19, 2023. It is now read-only.
MDFInternationalization assists in internationalizing your iOS app or components' user interface.
Right-to-Left calculations for CGRects and UIEdgeInsets
A UIView is positioned within its superview in terms of a frame (CGRect) consisting of an
origin and a size. When a device is set to a language that is written from Right-to-Left (RTL),
we often want to mirror the interface around the vertical axis. This library contains
functions to assist in modifying frames and edge insets for 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;
Mirroring Images
A category on UIImage backports iOS 10's [UIImage imageWithHorizontallyFlippedOrientation] to
earlier versions of iOS.
// To mirror on image, invoke mdf_imageWithHorizontallyFlippedOrientation.
UIImage *mirroredImage = [originalImage mdf_imageWithHorizontallyFlippedOrientation];
Adding semantic context
A category on UIView backports iOS 9's -[UIView semanticContentAttribute] and iOS 10's
-[UIView effectiveUserInterfaceLayoutDirection] to earlier versions of iOS.
// To set a semantic content attribute, set the mdf_semanticContentAttribute property.
lockedLTRView.mdf_semanticContentAttribute = UISemanticContentAttributeForceLeftToRight;
// mdf_semanticContentAttribute is used to calculate the mdf_effectiveUserInterfaceLayoutDirectionif (customView.mdf_effectiveUserInterfaceLayoutDirection == UIUserInterfaceLayoutDirectionRightToLeft) {
// Update customView's layout to be in RTL mode.
}
Embedding Bi-directional strings
A category on NSString offers a simple API to wrap strings in Unicode markers so that LTR
and RTL text can co-exist in the same string.
// 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 = [NSStringstringWithFormat:@"%@ : %ld", wrappedRestaurantName, attendees];
Usage
See Examples/Flags for a detailed example of how to use the functionality provided by this library.