mirror of
https://github.com/kiwix/kiwix-apple.git
synced 2025-09-28 14:35:03 -04:00
Font size
This commit is contained in:
parent
ab2fbea8db
commit
0c7e6421ec
74
Kiwix-iOS/Controller/Setting/FontSizeController.swift
Normal file
74
Kiwix-iOS/Controller/Setting/FontSizeController.swift
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
//
|
||||||
|
// FontSizeController.swift
|
||||||
|
// Kiwix
|
||||||
|
//
|
||||||
|
// Created by Chris Li on 1/20/17.
|
||||||
|
// Copyright © 2017 Chris Li. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import UIKit
|
||||||
|
|
||||||
|
class FontSizeController: UIViewController, UITableViewDelegate, UITableViewDataSource {
|
||||||
|
|
||||||
|
@IBOutlet weak var label: UILabel!
|
||||||
|
@IBOutlet weak var visiualView: UIVisualEffectView!
|
||||||
|
@IBOutlet weak var tableView: UITableView!
|
||||||
|
|
||||||
|
private(set) var selected = Preference.webViewZoomScale
|
||||||
|
let percentages = [0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.05, 1.10, 1.15, 1.20, 1.30, 1.40, 1.50, 1.75, 2.0]
|
||||||
|
let percentageFormatter: NumberFormatter = {
|
||||||
|
let formatter = NumberFormatter()
|
||||||
|
formatter.numberStyle = .percent
|
||||||
|
formatter.maximumFractionDigits = 0
|
||||||
|
formatter.maximumIntegerDigits = 3
|
||||||
|
return formatter
|
||||||
|
}()
|
||||||
|
|
||||||
|
override func viewWillDisappear(_ animated: Bool) {
|
||||||
|
super.viewWillDisappear(animated)
|
||||||
|
Preference.webViewZoomScale = selected
|
||||||
|
}
|
||||||
|
|
||||||
|
override func viewDidLayoutSubviews() {
|
||||||
|
super.viewDidLayoutSubviews()
|
||||||
|
let topInset = (navigationController?.navigationBar.frame.height ?? 0) + visiualView.frame.height
|
||||||
|
tableView.contentInset = UIEdgeInsets(top: topInset, left: 0, bottom: 0, right: 0)
|
||||||
|
tableView.scrollIndicatorInsets = tableView.contentInset
|
||||||
|
tableView.scrollRectToVisible(CGRect(x: 0, y: 0, width: 1, height: 1), animated: false)
|
||||||
|
}
|
||||||
|
|
||||||
|
// MARK: - UITableViewDataSource
|
||||||
|
|
||||||
|
func numberOfSections(in tableView: UITableView) -> Int {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
|
||||||
|
return percentages.count
|
||||||
|
}
|
||||||
|
|
||||||
|
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
|
||||||
|
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
|
||||||
|
cell.textLabel?.text = percentageFormatter.string(from: NSNumber(value: percentages[indexPath.row]))
|
||||||
|
cell.accessoryType = percentages[indexPath.row] == selected ? .checkmark : .none
|
||||||
|
return cell
|
||||||
|
}
|
||||||
|
|
||||||
|
// MARK: - UITableViewDelegate
|
||||||
|
|
||||||
|
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
|
||||||
|
tableView.deselectRow(at: indexPath, animated: true)
|
||||||
|
|
||||||
|
var indexPaths = [indexPath]
|
||||||
|
|
||||||
|
if let previousIndex = percentages.index(of: selected) {
|
||||||
|
indexPaths.append(IndexPath(row: previousIndex, section: 0))
|
||||||
|
}
|
||||||
|
|
||||||
|
selected = percentages[indexPath.row]
|
||||||
|
tableView.reloadRows(at: indexPaths, with: .automatic)
|
||||||
|
label.font = UIFont.systemFont(ofSize: CGFloat(14.0 * percentages[indexPath.row]))
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,95 @@
|
|||||||
|
//
|
||||||
|
// NotificationSettingController.swift
|
||||||
|
// Kiwix
|
||||||
|
//
|
||||||
|
// Created by Chris Li on 1/20/17.
|
||||||
|
// Copyright © 2017 Chris Li. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import UIKit
|
||||||
|
|
||||||
|
class NotificationSettingController: UITableViewController {
|
||||||
|
|
||||||
|
override func viewDidLoad() {
|
||||||
|
super.viewDidLoad()
|
||||||
|
|
||||||
|
// Uncomment the following line to preserve selection between presentations
|
||||||
|
// self.clearsSelectionOnViewWillAppear = false
|
||||||
|
|
||||||
|
// Uncomment the following line to display an Edit button in the navigation bar for this view controller.
|
||||||
|
// self.navigationItem.rightBarButtonItem = self.editButtonItem()
|
||||||
|
}
|
||||||
|
|
||||||
|
override func didReceiveMemoryWarning() {
|
||||||
|
super.didReceiveMemoryWarning()
|
||||||
|
// Dispose of any resources that can be recreated.
|
||||||
|
}
|
||||||
|
|
||||||
|
// MARK: - Table view data source
|
||||||
|
|
||||||
|
override func numberOfSections(in tableView: UITableView) -> Int {
|
||||||
|
// #warning Incomplete implementation, return the number of sections
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
|
||||||
|
// #warning Incomplete implementation, return the number of rows
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
|
||||||
|
let cell = tableView.dequeueReusableCell(withIdentifier: "reuseIdentifier", for: indexPath)
|
||||||
|
|
||||||
|
// Configure the cell...
|
||||||
|
|
||||||
|
return cell
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
// Override to support conditional editing of the table view.
|
||||||
|
override func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
|
||||||
|
// Return false if you do not want the specified item to be editable.
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
// Override to support editing the table view.
|
||||||
|
override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
|
||||||
|
if editingStyle == .delete {
|
||||||
|
// Delete the row from the data source
|
||||||
|
tableView.deleteRows(at: [indexPath], with: .fade)
|
||||||
|
} else if editingStyle == .insert {
|
||||||
|
// Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
// Override to support rearranging the table view.
|
||||||
|
override func tableView(_ tableView: UITableView, moveRowAt fromIndexPath: IndexPath, to: IndexPath) {
|
||||||
|
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
// Override to support conditional rearranging of the table view.
|
||||||
|
override func tableView(_ tableView: UITableView, canMoveRowAt indexPath: IndexPath) -> Bool {
|
||||||
|
// Return false if you do not want the item to be re-orderable.
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
// MARK: - Navigation
|
||||||
|
|
||||||
|
// In a storyboard-based application, you will often want to do a little preparation before navigation
|
||||||
|
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
|
||||||
|
// Get the new view controller using segue.destinationViewController.
|
||||||
|
// Pass the selected object to the new view controller.
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
}
|
@ -15,6 +15,14 @@ class SettingController: UITableViewController {
|
|||||||
let rows = [[Localized.Setting.fontSize, Localized.Setting.notifications],
|
let rows = [[Localized.Setting.fontSize, Localized.Setting.notifications],
|
||||||
[Localized.Setting.feedback, Localized.Setting.rateApp],
|
[Localized.Setting.feedback, Localized.Setting.rateApp],
|
||||||
[Localized.Setting.about]]
|
[Localized.Setting.about]]
|
||||||
|
|
||||||
|
let percentageFormatter: NumberFormatter = {
|
||||||
|
let formatter = NumberFormatter()
|
||||||
|
formatter.numberStyle = .percent
|
||||||
|
formatter.maximumFractionDigits = 0
|
||||||
|
formatter.maximumIntegerDigits = 3
|
||||||
|
return formatter
|
||||||
|
}()
|
||||||
|
|
||||||
override func viewDidLoad() {
|
override func viewDidLoad() {
|
||||||
super.viewDidLoad()
|
super.viewDidLoad()
|
||||||
@ -37,7 +45,14 @@ class SettingController: UITableViewController {
|
|||||||
|
|
||||||
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
|
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
|
||||||
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
|
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
|
||||||
cell.textLabel?.text = rows[indexPath.section][indexPath.row]
|
let text = rows[indexPath.section][indexPath.row]
|
||||||
|
cell.textLabel?.text = text
|
||||||
|
switch text {
|
||||||
|
case Localized.Setting.fontSize:
|
||||||
|
cell.detailTextLabel?.text = percentageFormatter.string(from: NSNumber(value: Preference.webViewZoomScale))
|
||||||
|
default:
|
||||||
|
cell.detailTextLabel?.text = nil
|
||||||
|
}
|
||||||
return cell
|
return cell
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -47,6 +62,10 @@ class SettingController: UITableViewController {
|
|||||||
tableView.deselectRow(at: indexPath, animated: true)
|
tableView.deselectRow(at: indexPath, animated: true)
|
||||||
let text = rows[indexPath.section][indexPath.row]
|
let text = rows[indexPath.section][indexPath.row]
|
||||||
switch text {
|
switch text {
|
||||||
|
case Localized.Setting.fontSize:
|
||||||
|
let controller = UIStoryboard(name: "Setting", bundle: nil).instantiateViewController(withIdentifier: "FontSizeController") as! FontSizeController
|
||||||
|
controller.title = Localized.Setting.fontSize
|
||||||
|
navigationController?.pushViewController(controller, animated: true)
|
||||||
case Localized.Setting.feedback:
|
case Localized.Setting.feedback:
|
||||||
if MFMailComposeViewController.canSendMail() {
|
if MFMailComposeViewController.canSendMail() {
|
||||||
UIQueue.shared.add(operation: FeedbackMailOperation(context: self))
|
UIQueue.shared.add(operation: FeedbackMailOperation(context: self))
|
||||||
@ -90,6 +109,11 @@ extension Localized {
|
|||||||
static let about = NSLocalizedString("About", comment: "Setting table rows")
|
static let about = NSLocalizedString("About", comment: "Setting table rows")
|
||||||
static let version = NSLocalizedString("Kiwix for iOS v%@", comment: "Setting table footer")
|
static let version = NSLocalizedString("Kiwix for iOS v%@", comment: "Setting table footer")
|
||||||
|
|
||||||
|
class Notification {
|
||||||
|
static let libraryRefresh = NSLocalizedString("Library Refresh", comment: "Notification Setting")
|
||||||
|
static let bookUpdatesAvailable = NSLocalizedString("Book Updates Available", comment: "Notification Setting")
|
||||||
|
}
|
||||||
|
|
||||||
class Feedback {
|
class Feedback {
|
||||||
static let subject = NSLocalizedString(String(format: "Feedback: Kiwix for iOS %@", Bundle.appShortVersion),
|
static let subject = NSLocalizedString(String(format: "Feedback: Kiwix for iOS %@", Bundle.appShortVersion),
|
||||||
comment: "Feedback email composer subject, %@ will be replaced by kiwix version string")
|
comment: "Feedback email composer subject, %@ will be replaced by kiwix version string")
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>
|
<color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>
|
||||||
<prototypes>
|
<prototypes>
|
||||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" accessoryType="disclosureIndicator" indentationWidth="10" reuseIdentifier="Cell" textLabel="OEl-0W-5zG" style="IBUITableViewCellStyleDefault" id="K6f-F5-Ibr">
|
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" accessoryType="disclosureIndicator" indentationWidth="10" reuseIdentifier="Cell" textLabel="OEl-0W-5zG" detailTextLabel="Gym-6E-seW" style="IBUITableViewCellStyleValue1" id="K6f-F5-Ibr">
|
||||||
<rect key="frame" x="0.0" y="56" width="375" height="44"/>
|
<rect key="frame" x="0.0" y="56" width="375" height="44"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="K6f-F5-Ibr" id="VlD-vh-hfO">
|
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="K6f-F5-Ibr" id="VlD-vh-hfO">
|
||||||
@ -26,7 +26,14 @@
|
|||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Title" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="OEl-0W-5zG">
|
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Title" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="OEl-0W-5zG">
|
||||||
<rect key="frame" x="15" y="0.0" width="325" height="43"/>
|
<rect key="frame" x="15" y="11" width="34" height="21"/>
|
||||||
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
|
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||||
|
<nil key="textColor"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
</label>
|
||||||
|
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Detail" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="Gym-6E-seW">
|
||||||
|
<rect key="frame" x="296" y="11" width="44" height="21"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||||
<nil key="textColor"/>
|
<nil key="textColor"/>
|
||||||
@ -53,6 +60,138 @@
|
|||||||
</objects>
|
</objects>
|
||||||
<point key="canvasLocation" x="1040.8" y="224.4377811094453"/>
|
<point key="canvasLocation" x="1040.8" y="224.4377811094453"/>
|
||||||
</scene>
|
</scene>
|
||||||
|
<!--Font Size Controller-->
|
||||||
|
<scene sceneID="J3V-PD-eYd">
|
||||||
|
<objects>
|
||||||
|
<viewController storyboardIdentifier="FontSizeController" automaticallyAdjustsScrollViewInsets="NO" id="P2M-5j-5TY" customClass="FontSizeController" customModule="Kiwix" customModuleProvider="target" sceneMemberID="viewController">
|
||||||
|
<layoutGuides>
|
||||||
|
<viewControllerLayoutGuide type="top" id="uqv-6I-TtY"/>
|
||||||
|
<viewControllerLayoutGuide type="bottom" id="0g9-an-uzg"/>
|
||||||
|
</layoutGuides>
|
||||||
|
<view key="view" contentMode="scaleToFill" id="ACg-V3-Vck">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="grouped" separatorStyle="default" rowHeight="44" sectionHeaderHeight="18" sectionFooterHeight="18" translatesAutoresizingMaskIntoConstraints="NO" id="IN1-AZ-MDG">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||||
|
<color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>
|
||||||
|
<prototypes>
|
||||||
|
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="Cell" id="fQb-QE-gpI">
|
||||||
|
<rect key="frame" x="0.0" y="56" width="375" height="44"/>
|
||||||
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
|
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="fQb-QE-gpI" id="7Jd-OT-Wkn">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="375" height="43"/>
|
||||||
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
|
</tableViewCellContentView>
|
||||||
|
</tableViewCell>
|
||||||
|
</prototypes>
|
||||||
|
<connections>
|
||||||
|
<outlet property="dataSource" destination="P2M-5j-5TY" id="22X-as-lzi"/>
|
||||||
|
<outlet property="delegate" destination="P2M-5j-5TY" id="7kM-X9-17W"/>
|
||||||
|
</connections>
|
||||||
|
</tableView>
|
||||||
|
<visualEffectView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Ifm-6c-UaC">
|
||||||
|
<rect key="frame" x="0.0" y="64" width="375" height="90.5"/>
|
||||||
|
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" id="2v7-6U-Zy8">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="375" height="90.5"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" textAlignment="justified" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Q8Z-xJ-28L">
|
||||||
|
<rect key="frame" x="8" y="31" width="359" height="50.5"/>
|
||||||
|
<string key="text">Kiwix for iOS is an offline reader for wikipedia. Our mission is to give people equal and easy access to free knowledge of the world.</string>
|
||||||
|
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||||
|
<nil key="textColor"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
</label>
|
||||||
|
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="pWH-2t-LHW">
|
||||||
|
<rect key="frame" x="0.0" y="89.5" width="375" height="1"/>
|
||||||
|
<color key="backgroundColor" name="gridColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="height" constant="0.5" id="hMS-Ko-BaP"/>
|
||||||
|
</constraints>
|
||||||
|
</view>
|
||||||
|
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Preview:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qio-Rh-CpL">
|
||||||
|
<rect key="frame" x="8" y="8" width="359" height="21"/>
|
||||||
|
<fontDescription key="fontDescription" type="system" weight="medium" pointSize="17"/>
|
||||||
|
<nil key="textColor"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
</label>
|
||||||
|
</subviews>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="bottom" secondItem="pWH-2t-LHW" secondAttribute="bottom" id="1zF-HW-C31"/>
|
||||||
|
<constraint firstItem="qio-Rh-CpL" firstAttribute="top" secondItem="2v7-6U-Zy8" secondAttribute="top" constant="8" id="4MU-Q0-pWq"/>
|
||||||
|
<constraint firstAttribute="trailing" secondItem="pWH-2t-LHW" secondAttribute="trailing" id="K6u-Dg-Hz5"/>
|
||||||
|
<constraint firstAttribute="trailing" secondItem="Q8Z-xJ-28L" secondAttribute="trailing" constant="8" id="MGr-Em-FzR"/>
|
||||||
|
<constraint firstItem="qio-Rh-CpL" firstAttribute="leading" secondItem="2v7-6U-Zy8" secondAttribute="leading" constant="8" id="NFw-1L-7Er"/>
|
||||||
|
<constraint firstAttribute="trailing" secondItem="qio-Rh-CpL" secondAttribute="trailing" constant="8" id="bdz-hh-LHL"/>
|
||||||
|
<constraint firstItem="pWH-2t-LHW" firstAttribute="top" secondItem="Q8Z-xJ-28L" secondAttribute="bottom" constant="8" id="g91-d8-owW"/>
|
||||||
|
<constraint firstItem="Q8Z-xJ-28L" firstAttribute="leading" secondItem="2v7-6U-Zy8" secondAttribute="leading" constant="8" id="oKg-Yp-fm6"/>
|
||||||
|
<constraint firstItem="pWH-2t-LHW" firstAttribute="leading" secondItem="2v7-6U-Zy8" secondAttribute="leading" id="reU-JU-IjM"/>
|
||||||
|
<constraint firstItem="Q8Z-xJ-28L" firstAttribute="top" secondItem="qio-Rh-CpL" secondAttribute="bottom" constant="2" id="wfW-hH-WOA"/>
|
||||||
|
</constraints>
|
||||||
|
</view>
|
||||||
|
<blurEffect style="extraLight"/>
|
||||||
|
</visualEffectView>
|
||||||
|
</subviews>
|
||||||
|
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstAttribute="trailing" secondItem="Ifm-6c-UaC" secondAttribute="trailing" id="CYp-TC-GoI"/>
|
||||||
|
<constraint firstItem="Ifm-6c-UaC" firstAttribute="leading" secondItem="ACg-V3-Vck" secondAttribute="leading" id="Eus-UL-e9a"/>
|
||||||
|
<constraint firstItem="IN1-AZ-MDG" firstAttribute="leading" secondItem="ACg-V3-Vck" secondAttribute="leading" id="JAM-SY-5Sm"/>
|
||||||
|
<constraint firstItem="IN1-AZ-MDG" firstAttribute="top" secondItem="ACg-V3-Vck" secondAttribute="top" id="QgJ-Y0-a4v"/>
|
||||||
|
<constraint firstItem="Ifm-6c-UaC" firstAttribute="top" secondItem="uqv-6I-TtY" secondAttribute="bottom" id="imv-13-bXi"/>
|
||||||
|
<constraint firstItem="0g9-an-uzg" firstAttribute="top" secondItem="IN1-AZ-MDG" secondAttribute="bottom" id="oRY-JB-ylK"/>
|
||||||
|
<constraint firstAttribute="trailing" secondItem="IN1-AZ-MDG" secondAttribute="trailing" id="zFH-ia-OVo"/>
|
||||||
|
</constraints>
|
||||||
|
</view>
|
||||||
|
<simulatedNavigationBarMetrics key="simulatedTopBarMetrics" prompted="NO"/>
|
||||||
|
<connections>
|
||||||
|
<outlet property="label" destination="Q8Z-xJ-28L" id="b20-Ts-400"/>
|
||||||
|
<outlet property="tableView" destination="IN1-AZ-MDG" id="RKl-HE-T5c"/>
|
||||||
|
<outlet property="visiualView" destination="Ifm-6c-UaC" id="WjN-xd-jXA"/>
|
||||||
|
</connections>
|
||||||
|
</viewController>
|
||||||
|
<placeholder placeholderIdentifier="IBFirstResponder" id="6MA-Bq-hJq" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||||
|
</objects>
|
||||||
|
<point key="canvasLocation" x="2505" y="224"/>
|
||||||
|
</scene>
|
||||||
|
<!--Table View Controller-->
|
||||||
|
<scene sceneID="9Sm-h0-uHE">
|
||||||
|
<objects>
|
||||||
|
<tableViewController id="vWm-pL-Cqo" sceneMemberID="viewController">
|
||||||
|
<tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="grouped" separatorStyle="default" rowHeight="44" sectionHeaderHeight="18" sectionFooterHeight="18" id="Wdz-NP-TF0">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<color key="backgroundColor" cocoaTouchSystemColor="groupTableViewBackgroundColor"/>
|
||||||
|
<prototypes>
|
||||||
|
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" reuseIdentifier="Cell" textLabel="WUG-nC-ahL" style="IBUITableViewCellStyleDefault" id="aC7-5o-lNk">
|
||||||
|
<rect key="frame" x="0.0" y="56" width="375" height="44"/>
|
||||||
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
|
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="aC7-5o-lNk" id="X9i-gE-h3L">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="375" height="43"/>
|
||||||
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
|
<subviews>
|
||||||
|
<label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Title" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="WUG-nC-ahL">
|
||||||
|
<rect key="frame" x="15" y="0.0" width="345" height="43"/>
|
||||||
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
|
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||||
|
<nil key="textColor"/>
|
||||||
|
<nil key="highlightedColor"/>
|
||||||
|
</label>
|
||||||
|
</subviews>
|
||||||
|
</tableViewCellContentView>
|
||||||
|
</tableViewCell>
|
||||||
|
</prototypes>
|
||||||
|
<connections>
|
||||||
|
<outlet property="dataSource" destination="vWm-pL-Cqo" id="drG-HO-hBg"/>
|
||||||
|
<outlet property="delegate" destination="vWm-pL-Cqo" id="MHp-JV-bAY"/>
|
||||||
|
</connections>
|
||||||
|
</tableView>
|
||||||
|
</tableViewController>
|
||||||
|
<placeholder placeholderIdentifier="IBFirstResponder" id="5iA-l5-DLY" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||||
|
</objects>
|
||||||
|
<point key="canvasLocation" x="3252" y="224"/>
|
||||||
|
</scene>
|
||||||
<!--Static Web Controller-->
|
<!--Static Web Controller-->
|
||||||
<scene sceneID="BAo-fm-zbn">
|
<scene sceneID="BAo-fm-zbn">
|
||||||
<objects>
|
<objects>
|
||||||
|
@ -71,6 +71,8 @@
|
|||||||
976C1DD21E3000F1005EDEC4 /* SettingController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 976C1DD11E3000F1005EDEC4 /* SettingController.swift */; };
|
976C1DD21E3000F1005EDEC4 /* SettingController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 976C1DD11E3000F1005EDEC4 /* SettingController.swift */; };
|
||||||
976C1DD41E300695005EDEC4 /* UIProcedure.swift in Sources */ = {isa = PBXBuildFile; fileRef = 976C1DD31E300695005EDEC4 /* UIProcedure.swift */; };
|
976C1DD41E300695005EDEC4 /* UIProcedure.swift in Sources */ = {isa = PBXBuildFile; fileRef = 976C1DD31E300695005EDEC4 /* UIProcedure.swift */; };
|
||||||
976C1DD61E32628B005EDEC4 /* StaticWebController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 976C1DD51E32628B005EDEC4 /* StaticWebController.swift */; };
|
976C1DD61E32628B005EDEC4 /* StaticWebController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 976C1DD51E32628B005EDEC4 /* StaticWebController.swift */; };
|
||||||
|
976C1DD81E327328005EDEC4 /* FontSizeController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 976C1DD71E327328005EDEC4 /* FontSizeController.swift */; };
|
||||||
|
976C1DDA1E32A7B3005EDEC4 /* NotificationSettingController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 976C1DD91E32A7B3005EDEC4 /* NotificationSettingController.swift */; };
|
||||||
9771A5BD1DD269BD005F1795 /* Book+CoreDataProperties.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D6813C1D6F712800E5FA99 /* Book+CoreDataProperties.swift */; };
|
9771A5BD1DD269BD005F1795 /* Book+CoreDataProperties.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D6813C1D6F712800E5FA99 /* Book+CoreDataProperties.swift */; };
|
||||||
9779C3141D4575AD0064CC8E /* NotificationCenter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 97E609F01D103DED00EBCB9D /* NotificationCenter.framework */; };
|
9779C3141D4575AD0064CC8E /* NotificationCenter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 97E609F01D103DED00EBCB9D /* NotificationCenter.framework */; };
|
||||||
9779C3171D4575AE0064CC8E /* TodayViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9779C3161D4575AE0064CC8E /* TodayViewController.swift */; };
|
9779C3171D4575AE0064CC8E /* TodayViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9779C3161D4575AE0064CC8E /* TodayViewController.swift */; };
|
||||||
@ -232,6 +234,8 @@
|
|||||||
976C1DD11E3000F1005EDEC4 /* SettingController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingController.swift; sourceTree = "<group>"; };
|
976C1DD11E3000F1005EDEC4 /* SettingController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingController.swift; sourceTree = "<group>"; };
|
||||||
976C1DD31E300695005EDEC4 /* UIProcedure.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIProcedure.swift; sourceTree = "<group>"; };
|
976C1DD31E300695005EDEC4 /* UIProcedure.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIProcedure.swift; sourceTree = "<group>"; };
|
||||||
976C1DD51E32628B005EDEC4 /* StaticWebController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StaticWebController.swift; sourceTree = "<group>"; };
|
976C1DD51E32628B005EDEC4 /* StaticWebController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StaticWebController.swift; sourceTree = "<group>"; };
|
||||||
|
976C1DD71E327328005EDEC4 /* FontSizeController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FontSizeController.swift; sourceTree = "<group>"; };
|
||||||
|
976C1DD91E32A7B3005EDEC4 /* NotificationSettingController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NotificationSettingController.swift; sourceTree = "<group>"; };
|
||||||
9779C3131D4575AD0064CC8E /* Bookmarks.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = Bookmarks.appex; sourceTree = BUILT_PRODUCTS_DIR; };
|
9779C3131D4575AD0064CC8E /* Bookmarks.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = Bookmarks.appex; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
9779C3161D4575AE0064CC8E /* TodayViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TodayViewController.swift; sourceTree = "<group>"; };
|
9779C3161D4575AE0064CC8E /* TodayViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TodayViewController.swift; sourceTree = "<group>"; };
|
||||||
9779C31B1D4575AE0064CC8E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
9779C31B1D4575AE0064CC8E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||||
@ -587,6 +591,8 @@
|
|||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
976C1DD11E3000F1005EDEC4 /* SettingController.swift */,
|
976C1DD11E3000F1005EDEC4 /* SettingController.swift */,
|
||||||
|
976C1DD91E32A7B3005EDEC4 /* NotificationSettingController.swift */,
|
||||||
|
976C1DD71E327328005EDEC4 /* FontSizeController.swift */,
|
||||||
976C1DD51E32628B005EDEC4 /* StaticWebController.swift */,
|
976C1DD51E32628B005EDEC4 /* StaticWebController.swift */,
|
||||||
);
|
);
|
||||||
path = Setting;
|
path = Setting;
|
||||||
@ -1123,6 +1129,7 @@
|
|||||||
97D681321D6F70EC00E5FA99 /* MigrationPolicy.swift in Sources */,
|
97D681321D6F70EC00E5FA99 /* MigrationPolicy.swift in Sources */,
|
||||||
9732079E1DD197EA00EDD3DC /* LibrarySplitViewController.swift in Sources */,
|
9732079E1DD197EA00EDD3DC /* LibrarySplitViewController.swift in Sources */,
|
||||||
976C1DCB1E2FD5FC005EDEC4 /* TableOfContentsController.swift in Sources */,
|
976C1DCB1E2FD5FC005EDEC4 /* TableOfContentsController.swift in Sources */,
|
||||||
|
976C1DD81E327328005EDEC4 /* FontSizeController.swift in Sources */,
|
||||||
9771A5BD1DD269BD005F1795 /* Book+CoreDataProperties.swift in Sources */,
|
9771A5BD1DD269BD005F1795 /* Book+CoreDataProperties.swift in Sources */,
|
||||||
9764CBD11D806AD800072D6A /* RefreshLibControl.swift in Sources */,
|
9764CBD11D806AD800072D6A /* RefreshLibControl.swift in Sources */,
|
||||||
976C1DD61E32628B005EDEC4 /* StaticWebController.swift in Sources */,
|
976C1DD61E32628B005EDEC4 /* StaticWebController.swift in Sources */,
|
||||||
@ -1133,6 +1140,7 @@
|
|||||||
97A127CC1D777CF100FB204D /* SearchResultController.swift in Sources */,
|
97A127CC1D777CF100FB204D /* SearchResultController.swift in Sources */,
|
||||||
9732079F1DD197F400EDD3DC /* CloudBooksController.swift in Sources */,
|
9732079F1DD197F400EDD3DC /* CloudBooksController.swift in Sources */,
|
||||||
973208241DD217B600EDD3DC /* BookmarkHUD.swift in Sources */,
|
973208241DD217B600EDD3DC /* BookmarkHUD.swift in Sources */,
|
||||||
|
976C1DDA1E32A7B3005EDEC4 /* NotificationSettingController.swift in Sources */,
|
||||||
971A102F1D022AD5007FC62C /* Logo.swift in Sources */,
|
971A102F1D022AD5007FC62C /* Logo.swift in Sources */,
|
||||||
97A1FD191D6F71CE00A80EE2 /* ZimMultiReader.swift in Sources */,
|
97A1FD191D6F71CE00A80EE2 /* ZimMultiReader.swift in Sources */,
|
||||||
97A1FD261D6F71E200A80EE2 /* ZimReader.mm in Sources */,
|
97A1FD261D6F71E200A80EE2 /* ZimReader.mm in Sources */,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user