From 6cd37d1631dc51c2edffe738ccb57ccec69a8937 Mon Sep 17 00:00:00 2001 From: Daniela Arcese Date: Thu, 25 Jun 2020 12:37:24 -0400 Subject: [PATCH] Noorhashem/today widget fixes (#6861) * fixed the cut-off of copied link labels and the contrast of the color for light/dark mode * bug fixes : widget constraints + color contrasts of labels in light/dark themes + added pdf button designs * removed commented lines * styling edits * edit in constraint for widget button * removed tab + edits to constraints for buttons * fixed support for ios 112.4 colors * removed extra tabs * code styling * edits to label color variables definetions * code styling * code styling * code styling Co-authored-by: noorhashem --- .../close-private-tabs.imageset/Contents.json | 21 ++++ .../close-private-tabs.pdf | Bin 0 -> 7999 bytes .../private-search.imageset/Contents.json | 15 +++ .../private-search.pdf | Bin 0 -> 7681 bytes .../search-button.imageset/Contents.json | 33 ++++++ .../search-button.imageset/search.pdf | Bin 0 -> 5969 bytes .../subtitleLableColor.colorset/Contents.json | 56 +++++++++ .../widgetLabelColors.colorset/Contents.json | 56 +++++++++ Extensions/Today/TodayViewController.swift | 108 ++++++++---------- 9 files changed, 228 insertions(+), 61 deletions(-) create mode 100644 Extensions/Today/Images.xcassets/close-private-tabs.imageset/Contents.json create mode 100644 Extensions/Today/Images.xcassets/close-private-tabs.imageset/close-private-tabs.pdf create mode 100644 Extensions/Today/Images.xcassets/private-search.imageset/Contents.json create mode 100644 Extensions/Today/Images.xcassets/private-search.imageset/private-search.pdf create mode 100644 Extensions/Today/Images.xcassets/search-button.imageset/Contents.json create mode 100644 Extensions/Today/Images.xcassets/search-button.imageset/search.pdf create mode 100644 Extensions/Today/Images.xcassets/subtitleLableColor.colorset/Contents.json create mode 100644 Extensions/Today/Images.xcassets/widgetLabelColors.colorset/Contents.json diff --git a/Extensions/Today/Images.xcassets/close-private-tabs.imageset/Contents.json b/Extensions/Today/Images.xcassets/close-private-tabs.imageset/Contents.json new file mode 100644 index 000000000000..5dc3dae06cce --- /dev/null +++ b/Extensions/Today/Images.xcassets/close-private-tabs.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "close-private-tabs.pdf", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Extensions/Today/Images.xcassets/close-private-tabs.imageset/close-private-tabs.pdf b/Extensions/Today/Images.xcassets/close-private-tabs.imageset/close-private-tabs.pdf new file mode 100644 index 0000000000000000000000000000000000000000..7b9007f3ee234f95cb2e9799e1b92f6511a136a5 GIT binary patch literal 7999 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 literal 0 HcmV?d00001 diff --git a/Extensions/Today/Images.xcassets/subtitleLableColor.colorset/Contents.json b/Extensions/Today/Images.xcassets/subtitleLableColor.colorset/Contents.json new file mode 100644 index 000000000000..014c01ebf5b2 --- /dev/null +++ b/Extensions/Today/Images.xcassets/subtitleLableColor.colorset/Contents.json @@ -0,0 +1,56 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "1.000", + "green" : "1.000", + "red" : "1.000" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "light" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.235", + "green" : "0.220", + "red" : "0.220" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.702", + "green" : "0.694", + "red" : "0.694" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Extensions/Today/Images.xcassets/widgetLabelColors.colorset/Contents.json b/Extensions/Today/Images.xcassets/widgetLabelColors.colorset/Contents.json new file mode 100644 index 000000000000..a9cb0b1df4db --- /dev/null +++ b/Extensions/Today/Images.xcassets/widgetLabelColors.colorset/Contents.json @@ -0,0 +1,56 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "1.000", + "green" : "1.000", + "red" : "1.000" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "light" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.153", + "green" : "0.137", + "red" : "0.141" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.980", + "green" : "0.976", + "red" : "0.976" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Extensions/Today/TodayViewController.swift b/Extensions/Today/TodayViewController.swift index 20ba1311304b..02d4d3ce5809 100644 --- a/Extensions/Today/TodayViewController.swift +++ b/Extensions/Today/TodayViewController.swift @@ -17,40 +17,44 @@ struct TodayStrings { } private struct TodayUX { - static let privateBrowsingColor = UIColor(rgb: 0xcf68ff) static let backgroundHightlightColor = UIColor(white: 216.0/255.0, alpha: 44.0/255.0) - static let linkTextSize: CGFloat = 10.0 - static let labelTextSize: CGFloat = 14.0 - static let imageButtonTextSize: CGFloat = 14.0 - static let copyLinkImageWidth: CGFloat = 23 + static let linkTextSize: CGFloat = 9.0 + static let labelTextSize: CGFloat = 12.0 + static let imageButtonTextSize: CGFloat = 13.0 + static let copyLinkImageWidth: CGFloat = 20 static let margin: CGFloat = 8 static let buttonsHorizontalMarginPercentage: CGFloat = 0.1 - static let privateSearchButtonColorBrightPurple = UIColor(red: 117.0/255.0, green: 41.0/255.0, blue: 167.0/255.0, alpha: 1.0) - static let privateSearchButtonColorDarkPurple = UIColor(red: 73.0/255.0, green: 46.0/255.0, blue: 133.0/255.0, alpha: 1.0) - static let privateSearchButtonColorFaintDarkPurple = UIColor(red: 56.0/255.0, green: 51.0/255.0, blue: 114.0/255.0, alpha: 1.0) + static let buttonStackViewSpacing: CGFloat = 30.0 + static var labelColor: UIColor { + if #available(iOS 13, *) { + return UIColor(named: "widgetLabelColors") ?? UIColor(rgb: 0x242327) + } else { + return UIColor(rgb: 0x242327) + } + } + static var subtitleLabelColor: UIColor { + if #available(iOS 13, *) { + return UIColor(named: "subtitleLableColor") ?? UIColor(rgb: 0x38383C) + } else { + return UIColor(rgb: 0x38383C) + } + } } @objc (TodayViewController) class TodayViewController: UIViewController, NCWidgetProviding { - var copiedURL: URL? fileprivate lazy var newTabButton: ImageButtonWithLabel = { let imageButton = ImageButtonWithLabel() imageButton.addTarget(self, action: #selector(onPressNewTab), forControlEvents: .touchUpInside) imageButton.label.text = TodayStrings.NewTabButtonLabel - let button = imageButton.button - button.frame = CGRect(width: 60.0, height: 60.0) - button.backgroundColor = UIColor.white - button.layer.cornerRadius = button.frame.size.width/2 - button.clipsToBounds = true - button.setImage(UIImage(named: "search"), for: .normal) + button.setImage(UIImage(named: "search-button")?.withRenderingMode(.alwaysOriginal), for: .normal) let label = imageButton.label - label.tintColor = UIColor(named: "widgetLabelColors") - label.textColor = UIColor(named: "widgetLabelColors") + label.textColor = TodayUX.labelColor + label.tintColor = TodayUX.labelColor label.font = UIFont.systemFont(ofSize: TodayUX.imageButtonTextSize) - imageButton.sizeToFit() return imageButton }() @@ -60,16 +64,10 @@ class TodayViewController: UIViewController, NCWidgetProviding { imageButton.addTarget(self, action: #selector(onPressNewPrivateTab), forControlEvents: .touchUpInside) imageButton.label.text = TodayStrings.NewPrivateTabButtonLabel let button = imageButton.button - button.frame = CGRect(width: 60.0, height: 60.0) - button.performGradient(colorOne: TodayUX.privateSearchButtonColorFaintDarkPurple, colorTwo: TodayUX.privateSearchButtonColorDarkPurple, colorThree: TodayUX.privateSearchButtonColorBrightPurple) - button.layer.cornerRadius = button.frame.size.width/2 - button.clipsToBounds = true - button.setImage(UIImage(named: "quick_action_new_private_tab")?.withRenderingMode(.alwaysTemplate), for: .normal) - button.tintColor = UIColor.white - + button.setImage(UIImage(named: "private-search")?.withRenderingMode(.alwaysOriginal), for: .normal) let label = imageButton.label - label.tintColor = UIColor(named: "widgetLabelColors") - label.textColor = UIColor(named: "widgetLabelColors") + label.textColor = TodayUX.labelColor + label.tintColor = TodayUX.labelColor label.font = UIFont.systemFont(ofSize: TodayUX.imageButtonTextSize) imageButton.sizeToFit() return imageButton @@ -77,18 +75,18 @@ class TodayViewController: UIViewController, NCWidgetProviding { fileprivate lazy var openCopiedLinkButton: ButtonWithSublabel = { let button = ButtonWithSublabel() - button.setTitle(TodayStrings.GoToCopiedLinkLabel, for: .normal) button.addTarget(self, action: #selector(onPressOpenClibpoard), for: .touchUpInside) - // We need to set the background image/color for .Normal, so the whole button is tappable. button.setBackgroundColor(UIColor.clear, forState: .normal) button.setBackgroundColor(TodayUX.backgroundHightlightColor, forState: .highlighted) - - button.setImage(UIImage(named: "copy_link_icon")?.withRenderingMode(.alwaysTemplate), for: .normal) - + button.setImage(UIImage(named: "copy_link_icon")?.withRenderingMode(.alwaysOriginal), for: .normal) button.label.font = UIFont.systemFont(ofSize: TodayUX.labelTextSize) button.subtitleLabel.font = UIFont.systemFont(ofSize: TodayUX.linkTextSize) + button.label.textColor = TodayUX.labelColor + button.label.tintColor = TodayUX.labelColor + button.subtitleLabel.textColor = TodayUX.subtitleLabelColor + button.subtitleLabel.tintColor = TodayUX.subtitleLabelColor return button }() @@ -97,9 +95,7 @@ class TodayViewController: UIViewController, NCWidgetProviding { stackView.axis = .vertical stackView.alignment = .fill stackView.spacing = TodayUX.margin / 2 - stackView.distribution = UIStackView.Distribution.fill - stackView.layoutMargins = UIEdgeInsets(top: TodayUX.margin, left: TodayUX.margin, bottom: TodayUX.margin, right: TodayUX.margin) - stackView.isLayoutMarginsRelativeArrangement = true + stackView.distribution = UIStackView.Distribution.fillProportionally return stackView }() @@ -107,7 +103,7 @@ class TodayViewController: UIViewController, NCWidgetProviding { let stackView = UIStackView() stackView.axis = .horizontal stackView.alignment = .center - stackView.spacing = 30 + stackView.spacing = TodayUX.buttonStackViewSpacing stackView.distribution = UIStackView.Distribution.fillEqually return stackView }() @@ -122,15 +118,17 @@ class TodayViewController: UIViewController, NCWidgetProviding { override func viewDidLoad() { super.viewDidLoad() - let widgetView: UIView! self.extensionContext?.widgetLargestAvailableDisplayMode = .compact + let effectView: UIVisualEffectView + if #available(iOS 13, *) { effectView = UIVisualEffectView(effect: UIVibrancyEffect.widgetEffect(forVibrancyStyle: .label)) } else { - effectView = UIVisualEffectView(effect: UIVibrancyEffect.widgetPrimary()) + effectView = UIVisualEffectView(effect: .none) } + self.view.addSubview(effectView) effectView.snp.makeConstraints { make in make.edges.equalTo(self.view) @@ -217,20 +215,6 @@ extension UIButton { } } -extension UIButton { - func performGradient(colorOne: UIColor, colorTwo: UIColor, colorThree: UIColor) { - let gradientLayer = CAGradientLayer() - gradientLayer.frame = self.frame - gradientLayer.colors = [colorOne.cgColor, colorTwo.cgColor, colorThree.cgColor] - gradientLayer.startPoint = CGPoint(x: 1.0, y: 0.0) - gradientLayer.endPoint = CGPoint(x: 0.0, y: 1.0) - gradientLayer.locations = [0.0, 0.5, 1.0] - gradientLayer.cornerRadius = self.frame.size.width/2 - layer.masksToBounds = true - layer.insertSublayer(gradientLayer, below: self.imageView?.layer) - } -} - class ImageButtonWithLabel: UIView { lazy var button = UIButton() @@ -248,18 +232,20 @@ class ImageButtonWithLabel: UIView { func performLayout() { addSubview(button) addSubview(label) + button.imageView?.contentMode = .scaleAspectFit button.snp.makeConstraints { make in make.centerX.equalTo(self) - make.top.equalTo(self.safeAreaLayoutGuide) - make.right.greaterThanOrEqualTo(self.safeAreaLayoutGuide).offset(30) - make.left.greaterThanOrEqualTo(self.safeAreaLayoutGuide).inset(30) - make.height.width.equalTo(60) + make.top.equalTo(self.safeAreaLayoutGuide).offset(5) + make.right.greaterThanOrEqualTo(self.safeAreaLayoutGuide).offset(40) + make.left.greaterThanOrEqualTo(self.safeAreaLayoutGuide).inset(40) + make.height.greaterThanOrEqualTo(60) } label.snp.makeConstraints { make in make.top.equalTo(button.snp.bottom).offset(10) make.leading.trailing.bottom.equalTo(self) + make.height.equalTo(10) } label.numberOfLines = 1 @@ -291,30 +277,30 @@ class ButtonWithSublabel: UIButton { fileprivate func performLayout() { let titleLabel = self.label - self.titleLabel?.removeFromSuperview() addSubview(titleLabel) let imageView = self.imageView! let subtitleLabel = self.subtitleLabel - subtitleLabel.textColor = UIColor.lightGray self.addSubview(subtitleLabel) imageView.snp.makeConstraints { make in - make.centerY.left.equalTo(self) + make.centerY.left.equalTo(10) make.width.equalTo(TodayUX.copyLinkImageWidth) } titleLabel.snp.makeConstraints { make in - make.left.equalTo(imageView.snp.right).offset(TodayUX.margin) + make.left.equalTo(imageView.snp.right).offset(10) make.trailing.top.equalTo(self) + make.height.greaterThanOrEqualTo(12) } subtitleLabel.lineBreakMode = .byTruncatingTail subtitleLabel.snp.makeConstraints { make in - make.bottom.equalTo(self) + make.bottom.equalTo(self).inset(10) make.top.equalTo(titleLabel.snp.bottom) make.leading.trailing.equalTo(titleLabel) + make.height.greaterThanOrEqualTo(10) } }