| // Copyright 2019-present the Material Components for iOS authors. All Rights Reserved. | |
| // | |
| // Licensed under the Apache License, Version 2.0 (the "License"); | |
| // you may not use this file except in compliance with the License. | |
| // You may obtain a copy of the License at | |
| // | |
| // http://www.apache.org/licenses/LICENSE-2.0 | |
| // | |
| // Unless required by applicable law or agreed to in writing, software | |
| // distributed under the License is distributed on an "AS IS" BASIS, | |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| // See the License for the specific language governing permissions and | |
| // limitations under the License. | |
| #import <MaterialComponents/MaterialContainerScheme.h> | |
| #import <MaterialComponents/MaterialDialogs+Theming.h> | |
| #import "MDCAlertController+ButtonForAction.h" | |
| #import "MaterialButtons+Theming.h" | |
| #import "MaterialButtons.h" | |
| #import "MaterialColorScheme.h" | |
| #import "MaterialDialogs.h" | |
| @interface DialogsTallTextAlertExampleViewController : UIViewController | |
| @end | |
| @interface DialogsTallTextAlertExampleViewController () <MDCDialogPresentationControllerDelegate> | |
| @property(nonatomic, strong) MDCDialogTransitionController *transitionController; | |
| @property(nonatomic, strong) id<MDCContainerScheming> containerScheme; | |
| @end | |
| @implementation DialogsTallTextAlertExampleViewController | |
| - (void)viewDidLoad { | |
| [super viewDidLoad]; | |
| if (!self.containerScheme) { | |
| self.containerScheme = [[MDCContainerScheme alloc] init]; | |
| } | |
| self.view.backgroundColor = self.containerScheme.colorScheme.backgroundColor; | |
| // We must create and store a strong reference to the transitionController. | |
| // A presented view controller will set this object as its transitioning delegate. | |
| self.transitionController = [[MDCDialogTransitionController alloc] init]; | |
| MDCButton *presentButton = [[MDCButton alloc] initWithFrame:CGRectZero]; | |
| [presentButton setTitle:[NSString stringWithFormat:@"Dialog with large Urdu text"] | |
| forState:UIControlStateNormal]; | |
| [presentButton addTarget:self | |
| action:@selector(didTapPresent:) | |
| forControlEvents:UIControlEventTouchUpInside]; | |
| [self.view addSubview:presentButton]; | |
| presentButton.translatesAutoresizingMaskIntoConstraints = NO; | |
| [presentButton applyOutlinedThemeWithScheme:self.containerScheme]; | |
| [self.view addConstraints:@[ | |
| [NSLayoutConstraint constraintWithItem:self.view | |
| attribute:NSLayoutAttributeCenterX | |
| relatedBy:NSLayoutRelationEqual | |
| toItem:presentButton | |
| attribute:NSLayoutAttributeCenterX | |
| multiplier:1 | |
| constant:0], | |
| [NSLayoutConstraint constraintWithItem:self.view | |
| attribute:NSLayoutAttributeCenterY | |
| relatedBy:NSLayoutRelationEqual | |
| toItem:presentButton | |
| attribute:NSLayoutAttributeCenterY | |
| multiplier:1 | |
| constant:0], | |
| ]]; | |
| } | |
| - (IBAction)didTapPresent:(id)sender { | |
| NSString *networkFailureInUrdu = @"براہ کرم اپنا نیٹ ورک کنکشن چیک کریں اور دوبارہ کوشش کریں۔"; | |
| MDCAlertController *alert = [MDCAlertController alertControllerWithTitle:nil | |
| message:networkFailureInUrdu]; | |
| MDCAlertAction *retryAction = [MDCAlertAction actionWithTitle:@"دوبارہ کوشش کریں" handler:nil]; | |
| MDCAlertAction *cancelAction = [MDCAlertAction actionWithTitle:@"منسوخ کریں" handler:nil]; | |
| [alert addAction:retryAction]; | |
| [alert addAction:cancelAction]; | |
| [alert applyThemeWithScheme:self.containerScheme]; | |
| NSString *urduFontName = @"NotoNastaliqUrdu"; | |
| UIFont *dialogBodyFont = [UIFont systemFontOfSize:20.0]; | |
| UIFont *dialogButtonFont = [UIFont systemFontOfSize:20.0]; | |
| if (@available(iOS 11, *)) { | |
| // Noto Nastaliq Urdu was added in iOS 11, and is an extremely tall | |
| // font for any given nominal point size. | |
| dialogBodyFont = [UIFont fontWithName:urduFontName size:20.0]; | |
| dialogButtonFont = [UIFont fontWithName:urduFontName size:20.0]; | |
| } | |
| alert.messageFont = dialogBodyFont; | |
| MDCButton *buttonForRetryAction = [alert buttonForAction:retryAction]; | |
| buttonForRetryAction.titleLabel.font = dialogButtonFont; | |
| MDCButton *buttonForCancelAction = [alert buttonForAction:cancelAction]; | |
| buttonForCancelAction.titleLabel.font = dialogButtonFont; | |
| [self presentViewController:alert animated:YES completion:nil]; | |
| } | |
| #pragma mark - CatalogByConvention | |
| + (NSDictionary *)catalogMetadata { | |
| return @{ | |
| @"breadcrumbs" : @[ @"Dialogs", @"Dialog with Tall Text" ], | |
| @"primaryDemo" : @NO, | |
| @"presentable" : @NO, | |
| }; | |
| } | |
| @end | |
| @implementation DialogsTallTextAlertExampleViewController (SnapshotTestingByConvention) | |
| - (void)testPresented { | |
| if (self.presentedViewController) { | |
| [self dismissViewControllerAnimated:NO completion:nil]; | |
| } | |
| [self didTapPresent:nil]; | |
| } | |
| @end |