Skip to content

Commit

Permalink
Fix: RTL doesn't work on iOS (#546)
Browse files Browse the repository at this point in the history
Fixes  ooni/probe#2578

## Proposed Changes

  - Fix indentation for storyboard in onboarding screens

|.|.|.|
|--|--|--|
| ![Simulator Screenshot - iPhone 15 Pro Max - 2023-12-15 at 10 41
40](https://github.com/ooni/probe-ios/assets/17911892/69abd0a3-1e7b-44df-a488-1a402f866268)
| ![Simulator Screenshot - iPhone 15 Pro Max - 2023-12-15 at 10 41
42](https://github.com/ooni/probe-ios/assets/17911892/5d7ec93b-1c17-4d95-89b3-955755502ea5)
| ![Simulator Screenshot - iPhone 15 Pro Max - 2023-12-15 at 10 41
49](https://github.com/ooni/probe-ios/assets/17911892/d726583a-a165-43c8-a11e-872d35a32295)|
| ![Simulator Screenshot - iPhone 15 Pro Max - 2023-12-15 at 10 41
53](https://github.com/ooni/probe-ios/assets/17911892/38561260-bc93-4816-bb50-364908d49240)
| ![Simulator Screenshot - iPhone 15 Pro Max - 2023-12-15 at 10 41
56](https://github.com/ooni/probe-ios/assets/17911892/0aa45989-856d-4248-ba08-0ca9fbfdc29e)
| ![Simulator Screenshot - iPhone 15 Pro Max - 2023-12-15 at 10 42
01](https://github.com/ooni/probe-ios/assets/17911892/df996305-a44d-4d01-a2b5-c4916982f408)|
| ![Simulator Screenshot - iPhone 15 Pro Max - 2023-12-15 at 10 42
10](https://github.com/ooni/probe-ios/assets/17911892/27bf5542-6e6d-4c24-9d45-c9e1b4c5ccb4)
| ![Simulator Screenshot - iPhone 15 Pro Max - 2023-12-15 at 15 38
53](https://github.com/ooni/probe-ios/assets/17911892/27ac3c78-cf9f-4ad9-8095-de8200bcc487)
| ![Simulator Screenshot - iPhone 15 Pro Max - 2023-12-15 at 15 38
56](https://github.com/ooni/probe-ios/assets/17911892/76fee883-4a76-4293-a5bd-a457c444b39a)|
  • Loading branch information
aanorbel committed Dec 18, 2023
1 parent 6bf1a12 commit 12a2039
Show file tree
Hide file tree
Showing 4 changed files with 48 additions and 14 deletions.
35 changes: 21 additions & 14 deletions ooniprobe/Storyboards/Onboarding.storyboard
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="18122" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="22505" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
<device id="retina5_5" orientation="portrait" appearance="light"/>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="18093"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22504"/>
<capability name="Named colors" minToolsVersion="9.0"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
Expand Down Expand Up @@ -48,14 +48,14 @@
<rect key="frame" x="0.0" y="0.0" width="414" height="736"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="What is OONI Probe?" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumScaleFactor="0.5" translatesAutoresizingMaskIntoConstraints="NO" id="E83-HA-9VG">
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="What is OONI Probe?" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumScaleFactor="0.5" translatesAutoresizingMaskIntoConstraints="NO" id="E83-HA-9VG">
<rect key="frame" x="20" y="270" width="374" height="41"/>
<accessibility key="accessibilityConfiguration" identifier="Onboarding.WhatIsOONIProbe.Title"/>
<fontDescription key="fontDescription" name="FiraSans-Light" family="Fira Sans" pointSize="34"/>
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" minimumScaleFactor="0.5" translatesAutoresizingMaskIntoConstraints="NO" id="cpY-gy-NKd">
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" minimumScaleFactor="0.5" translatesAutoresizingMaskIntoConstraints="NO" id="cpY-gy-NKd">
<rect key="frame" x="20" y="319" width="374" height="122.66666666666669"/>
<accessibility key="accessibilityConfiguration" identifier="Onboarding.WhatIsOONIProbe.Paragraph"/>
<string key="text">OONI Probe is free and open source software that enables you to examine internet censorship in your network.
Expand Down Expand Up @@ -137,14 +137,14 @@ The data that you can collect through this app can serve as evidence of censorsh
<rect key="frame" x="0.0" y="0.0" width="414" height="736"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Things to know" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="hvO-dw-gFn">
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Things to know" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="hvO-dw-gFn">
<rect key="frame" x="20" y="286" width="374" height="41"/>
<accessibility key="accessibilityConfiguration" identifier="Onboarding.ThingsToKnow.Title"/>
<fontDescription key="fontDescription" name="FiraSans-Light" family="Fira Sans" pointSize="34"/>
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" minimumScaleFactor="0.5" translatesAutoresizingMaskIntoConstraints="NO" id="d3f-qb-Qml">
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" minimumScaleFactor="0.5" translatesAutoresizingMaskIntoConstraints="NO" id="d3f-qb-Qml">
<rect key="frame" x="20" y="335" width="374" height="163.33333333333337"/>
<accessibility key="accessibilityConfiguration" identifier="Onboarding.ThingsToKnow.Paragraph"/>
<string key="text">• OONI data is openly published and will include your network information.
Expand Down Expand Up @@ -248,14 +248,14 @@ The data that you can collect through this app can serve as evidence of censorsh
<rect key="frame" x="0.0" y="0.0" width="414" height="736"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Crash Reporting" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumScaleFactor="0.5" translatesAutoresizingMaskIntoConstraints="NO" id="ldx-vN-fF3">
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Crash Reporting" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumScaleFactor="0.5" translatesAutoresizingMaskIntoConstraints="NO" id="ldx-vN-fF3">
<rect key="frame" x="20" y="274" width="374" height="41"/>
<accessibility key="accessibilityConfiguration" identifier="Onboarding.Crash.Title"/>
<fontDescription key="fontDescription" name="FiraSans-Light" family="Fira Sans" pointSize="34"/>
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" minimumScaleFactor="0.5" translatesAutoresizingMaskIntoConstraints="NO" id="hx8-bq-2PZ" customClass="RHMarkdownLabel">
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" minimumScaleFactor="0.5" translatesAutoresizingMaskIntoConstraints="NO" id="hx8-bq-2PZ" customClass="RHMarkdownLabel">
<rect key="frame" x="20" y="324" width="374" height="122.66666666666669"/>
<accessibility key="accessibilityConfiguration" identifier="Onboarding.Crash.Paragraph"/>
<string key="text">To improve OONI Probe we would like to collect anonymous crash reports when the app does not work properly.
Expand Down Expand Up @@ -412,13 +412,20 @@ Would you like yo opt-in to submitting crash reports to the OONI development tea
<fragment>
<string key="content">Question 1/2

Anyone monitoring your internet activity may be able to see that you are running OONI Probe.</string>
</string>
<attributes>
<color key="NSColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<font key="NSFont" metaFont="system" size="17"/>
<paragraphStyle key="NSParagraphStyle" alignment="center" lineBreakMode="wordWrapping" baseWritingDirection="natural" tighteningFactorForTruncation="0.0"/>
</attributes>
</fragment>
<fragment content="Anyone monitoring your internet activity may be able to see that you are running OONI Probe.">
<attributes>
<color key="NSColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<font key="NSFont" metaFont="system" size="17"/>
<paragraphStyle key="NSParagraphStyle" alignment="natural" lineBreakMode="wordWrapping" baseWritingDirection="natural" tighteningFactorForTruncation="0.0"/>
</attributes>
</fragment>
</attributedString>
<nil key="highlightedColor"/>
</label>
Expand Down Expand Up @@ -544,7 +551,7 @@ Anyone monitoring your internet activity may be able to see that you are running
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" tag="6" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Esj-y5-c1t">
<label opaque="NO" userInteractionEnabled="NO" tag="6" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Esj-y5-c1t">
<rect key="frame" x="8" y="59" width="366" height="133"/>
<constraints>
<constraint firstAttribute="height" constant="133" id="bli-L4-W50"/>
Expand Down Expand Up @@ -634,14 +641,14 @@ Anyone monitoring your internet activity may be able to see that you are running
<rect key="frame" x="0.0" y="0.0" width="414" height="736"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Default Settings" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumScaleFactor="0.5" translatesAutoresizingMaskIntoConstraints="NO" id="Loq-bf-4xA">
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Default Settings" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumScaleFactor="0.5" translatesAutoresizingMaskIntoConstraints="NO" id="Loq-bf-4xA">
<rect key="frame" x="20" y="274" width="374" height="41"/>
<accessibility key="accessibilityConfiguration" identifier="Onboarding.DefaultSettings.Title"/>
<fontDescription key="fontDescription" name="FiraSans-Light" family="Fira Sans" pointSize="34"/>
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" minimumScaleFactor="0.5" translatesAutoresizingMaskIntoConstraints="NO" id="zkv-zi-fQp" customClass="RHMarkdownLabel">
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" minimumScaleFactor="0.5" translatesAutoresizingMaskIntoConstraints="NO" id="zkv-zi-fQp" customClass="RHMarkdownLabel">
<rect key="frame" x="20" y="324" width="374" height="245"/>
<accessibility key="accessibilityConfiguration" identifier="Onboarding.DefaultSettings.Paragraph"/>
<string key="text">We will collect and publish:
Expand Down Expand Up @@ -749,14 +756,14 @@ We do our best not to publish your IP address or any other potentially personall
<rect key="frame" x="0.0" y="0.0" width="414" height="736"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Automated testing" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumScaleFactor="0.5" translatesAutoresizingMaskIntoConstraints="NO" id="mF2-9T-9Ts">
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Automated testing" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumScaleFactor="0.5" translatesAutoresizingMaskIntoConstraints="NO" id="mF2-9T-9Ts">
<rect key="frame" x="20" y="274" width="374" height="41"/>
<accessibility key="accessibilityConfiguration" identifier="Onboarding.Crash.Title"/>
<fontDescription key="fontDescription" name="FiraSans-Light" family="Fira Sans" pointSize="34"/>
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" minimumScaleFactor="0.5" translatesAutoresizingMaskIntoConstraints="NO" id="cKL-3U-8ch" customClass="RHMarkdownLabel">
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" minimumScaleFactor="0.5" translatesAutoresizingMaskIntoConstraints="NO" id="cKL-3U-8ch" customClass="RHMarkdownLabel">
<rect key="frame" x="20" y="324" width="374" height="163.33333333333337"/>
<accessibility key="accessibilityConfiguration" identifier="Onboarding.Crash.Paragraph"/>
<string key="text">To measure internet censorship every day, please enable automated testing so that OONI Probe can run tests periodically.
Expand Down
9 changes: 9 additions & 0 deletions ooniprobe/View/Onboarding/Onboarding2ViewController.m
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,15 @@ - (void)viewDidLoad {
NSString *thingsToKnow = [NSString stringWithFormat:@"%@\n%@\n%@", NSLocalizedString(@"Onboarding.ThingsToKnow.Bullet.1", nil), NSLocalizedString(@"Onboarding.ThingsToKnow.Bullet.2", nil), NSLocalizedString(@"Onboarding.ThingsToKnow.Bullet.3", nil)];

[self.textLabel setText:thingsToKnow];
if ([[UIDevice currentDevice].systemVersion floatValue] >= 9.0) {
if ([UIView userInterfaceLayoutDirectionForSemanticContentAttribute:self.view.semanticContentAttribute] == UIUserInterfaceLayoutDirectionRightToLeft) {
self.textLabel.textAlignment = NSTextAlignmentRight;
}
} else {
if ([NSLocale characterDirectionForLanguage:[NSLocale preferredLanguages][0]] == NSLocaleLanguageDirectionRightToLeft) {
self.textLabel.textAlignment = NSTextAlignmentRight;
}
}
[self.nextButton setTitle:NSLocalizedString(@"Onboarding.ThingsToKnow.Button", nil) forState:UIControlStateNormal];
[self.nextButton setTitleColor:[UIColor colorNamed:@"color_blue8"]
forState:UIControlStateNormal];
Expand Down
9 changes: 9 additions & 0 deletions ooniprobe/View/Onboarding/Onboarding3ViewController.m
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,15 @@ - (void)viewDidLoad {
[linkAttrs setObject:[NSNumber numberWithBool:YES] forKey:(NSString*)kCTUnderlineStyleAttributeName];
self.textLabel.linkAttributes = linkAttrs;
[self.textLabel setMarkdown:defaultSettings];
if ([[UIDevice currentDevice].systemVersion floatValue] >= 9.0) {
if ([UIView userInterfaceLayoutDirectionForSemanticContentAttribute:self.view.semanticContentAttribute] == UIUserInterfaceLayoutDirectionRightToLeft) {
self.textLabel.textAlignment = NSTextAlignmentRight;
}
} else {
if ([NSLocale characterDirectionForLanguage:[NSLocale preferredLanguages][0]] == NSLocaleLanguageDirectionRightToLeft) {
self.textLabel.textAlignment = NSTextAlignmentRight;
}
}
[self.textLabel setDidSelectLinkWithURLBlock:^(RHMarkdownLabel *label, NSURL *url) {
[[UIApplication sharedApplication] openURL:url];
}];
Expand Down

0 comments on commit 12a2039

Please sign in to comment.