123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- // Copyright 2017 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #import "remoting/ios/app/first_launch_view_controller.h"
- #import <MaterialComponents/MaterialButtons.h>
- #include "remoting/base/string_resources.h"
- #import "remoting/ios/app/remoting_theme.h"
- #include "ui/base/l10n/l10n_util.h"
- #if !defined(__has_feature) || !__has_feature(objc_arc)
- #error "This file requires ARC support."
- #endif
- static const float kLogoSizeMultiplier = 0.381966f;
- static const float kLogoYOffset = -10.f;
- static const float kButtonHeight = 80.f;
- @interface FirstLaunchViewController () {
- NSArray<NSLayoutConstraint*>* _compactWidthConstraints;
- NSArray<NSLayoutConstraint*>* _compactHeightConstraints;
- }
- @end
- @implementation FirstLaunchViewController
- @synthesize delegate = _delegate;
- #pragma mark - UIViewController
- - (void)viewDidLoad {
- [super viewDidLoad];
- UIImageView* imageView = [[UIImageView alloc]
- initWithImage:[UIImage imageNamed:@"launchscreen_app_logo"]];
- imageView.translatesAutoresizingMaskIntoConstraints = NO;
- [self.view addSubview:imageView];
- MDCFlatButton* signInButton = [[MDCFlatButton alloc] init];
- [signInButton setTitle:l10n_util::GetNSString(IDS_SIGN_IN_BUTTON)
- forState:UIControlStateNormal];
- [signInButton sizeToFit];
- [signInButton addTarget:self
- action:@selector(didTapSignIn:)
- forControlEvents:UIControlEventTouchUpInside];
- [signInButton setTitleColor:RemotingTheme.flatButtonTextColor
- forState:UIControlStateNormal];
- signInButton.translatesAutoresizingMaskIntoConstraints = NO;
- [self.view addSubview:signInButton];
- self.view.backgroundColor = RemotingTheme.firstLaunchViewBackgroundColor;
- [self initConstraints:imageView button:signInButton];
- }
- - (void)traitCollectionDidChange:(UITraitCollection*)previousTraitCollection {
- [self refreshTraitCollection];
- }
- #pragma mark - Private
- - (void)didTapSignIn:(id)button {
- [_delegate presentSignInFlow];
- }
- - (void)initConstraints:(UIImageView*)imageView button:(UIButton*)signInButton {
- // This matches the constraints in LaunchScreen.storyboard.
- [imageView setContentHuggingPriority:UILayoutPriorityRequired
- forAxis:UILayoutConstraintAxisVertical];
- [imageView setContentHuggingPriority:UILayoutPriorityRequired
- forAxis:UILayoutConstraintAxisHorizontal];
- [imageView
- setContentCompressionResistancePriority:UILayoutPriorityDefaultLow
- forAxis:UILayoutConstraintAxisVertical];
- [imageView
- setContentCompressionResistancePriority:UILayoutPriorityDefaultLow
- forAxis:UILayoutConstraintAxisHorizontal];
- _compactWidthConstraints =
- @[ [imageView.widthAnchor constraintEqualToAnchor:self.view.widthAnchor
- multiplier:kLogoSizeMultiplier] ];
- _compactWidthConstraints[0].priority = UILayoutPriorityDefaultHigh;
- _compactHeightConstraints =
- @[ [imageView.heightAnchor constraintEqualToAnchor:self.view.heightAnchor
- multiplier:kLogoSizeMultiplier] ];
- _compactHeightConstraints[0].priority = UILayoutPriorityDefaultHigh;
- [NSLayoutConstraint activateConstraints:@[
- [imageView.centerXAnchor constraintEqualToAnchor:self.view.centerXAnchor],
- [imageView.centerYAnchor constraintEqualToAnchor:self.view.centerYAnchor
- constant:kLogoYOffset],
- [imageView.widthAnchor constraintEqualToAnchor:imageView.heightAnchor],
- [signInButton.leadingAnchor
- constraintEqualToAnchor:self.view.leadingAnchor],
- [signInButton.trailingAnchor
- constraintEqualToAnchor:self.view.trailingAnchor],
- [signInButton.bottomAnchor constraintEqualToAnchor:self.view.bottomAnchor],
- [signInButton.heightAnchor constraintEqualToConstant:kButtonHeight],
- ]];
- [self refreshTraitCollection];
- }
- - (void)refreshTraitCollection {
- if (self.traitCollection.verticalSizeClass ==
- UIUserInterfaceSizeClassCompact) {
- [NSLayoutConstraint deactivateConstraints:_compactWidthConstraints];
- [NSLayoutConstraint activateConstraints:_compactHeightConstraints];
- } else if (self.traitCollection.horizontalSizeClass ==
- UIUserInterfaceSizeClassCompact &&
- self.traitCollection.verticalSizeClass ==
- UIUserInterfaceSizeClassRegular) {
- [NSLayoutConstraint deactivateConstraints:_compactHeightConstraints];
- [NSLayoutConstraint activateConstraints:_compactWidthConstraints];
- } else {
- [NSLayoutConstraint deactivateConstraints:_compactWidthConstraints];
- [NSLayoutConstraint deactivateConstraints:_compactHeightConstraints];
- }
- }
- @end
|