OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #import "ios/chrome/browser/ui/uikit_ui_util.h" | 5 #import "ios/chrome/browser/ui/uikit_ui_util.h" |
6 | 6 |
7 #import <Accelerate/Accelerate.h> | 7 #import <Accelerate/Accelerate.h> |
8 #import <Foundation/Foundation.h> | 8 #import <Foundation/Foundation.h> |
9 #import <QuartzCore/QuartzCore.h> | 9 #import <QuartzCore/QuartzCore.h> |
10 #include <stddef.h> | 10 #include <stddef.h> |
(...skipping 552 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
563 NSDictionary* metrics, | 563 NSDictionary* metrics, |
564 UIView* unused_parentView) { | 564 UIView* unused_parentView) { |
565 ApplyVisualConstraintsWithMetrics(constraints, subviewsDictionary, metrics); | 565 ApplyVisualConstraintsWithMetrics(constraints, subviewsDictionary, metrics); |
566 } | 566 } |
567 | 567 |
568 void ApplyVisualConstraintsWithMetricsAndOptions( | 568 void ApplyVisualConstraintsWithMetricsAndOptions( |
569 NSArray* constraints, | 569 NSArray* constraints, |
570 NSDictionary* subviewsDictionary, | 570 NSDictionary* subviewsDictionary, |
571 NSDictionary* metrics, | 571 NSDictionary* metrics, |
572 NSLayoutFormatOptions options) { | 572 NSLayoutFormatOptions options) { |
573 NSMutableArray* layoutConstraints = | 573 NSArray* layoutConstraints = VisualConstraintsWithMetricsAndOptions( |
574 [NSMutableArray arrayWithCapacity:constraints.count * 3]; | 574 constraints, subviewsDictionary, metrics, options); |
575 for (NSString* constraint in constraints) { | |
576 DCHECK([constraint isKindOfClass:[NSString class]]); | |
577 [layoutConstraints addObjectsFromArray: | |
578 [NSLayoutConstraint | |
579 constraintsWithVisualFormat:constraint | |
580 options:options | |
581 metrics:metrics | |
582 views:subviewsDictionary]]; | |
583 } | |
584 [NSLayoutConstraint activateConstraints:layoutConstraints]; | 575 [NSLayoutConstraint activateConstraints:layoutConstraints]; |
585 } | 576 } |
586 | 577 |
587 void ApplyVisualConstraintsWithMetricsAndOptions( | 578 void ApplyVisualConstraintsWithMetricsAndOptions( |
588 NSArray* constraints, | 579 NSArray* constraints, |
589 NSDictionary* subviewsDictionary, | 580 NSDictionary* subviewsDictionary, |
590 NSDictionary* metrics, | 581 NSDictionary* metrics, |
591 NSLayoutFormatOptions options, | 582 NSLayoutFormatOptions options, |
592 UIView* unused_parentView) { | 583 UIView* unused_parentView) { |
593 ApplyVisualConstraintsWithMetricsAndOptions(constraints, subviewsDictionary, | 584 ApplyVisualConstraintsWithMetricsAndOptions(constraints, subviewsDictionary, |
594 metrics, options); | 585 metrics, options); |
595 } | 586 } |
596 | 587 |
| 588 NSArray* VisualConstraintsWithMetrics(NSArray* constraints, |
| 589 NSDictionary* subviewsDictionary, |
| 590 NSDictionary* metrics) { |
| 591 return VisualConstraintsWithMetricsAndOptions(constraints, subviewsDictionary, |
| 592 metrics, 0); |
| 593 } |
| 594 |
| 595 NSArray* VisualConstraintsWithMetricsAndOptions( |
| 596 NSArray* constraints, |
| 597 NSDictionary* subviewsDictionary, |
| 598 NSDictionary* metrics, |
| 599 NSLayoutFormatOptions options) { |
| 600 NSMutableArray* layoutConstraints = [NSMutableArray array]; |
| 601 for (NSString* constraint in constraints) { |
| 602 DCHECK([constraint isKindOfClass:[NSString class]]); |
| 603 [layoutConstraints addObjectsFromArray: |
| 604 [NSLayoutConstraint |
| 605 constraintsWithVisualFormat:constraint |
| 606 options:options |
| 607 metrics:metrics |
| 608 views:subviewsDictionary]]; |
| 609 } |
| 610 return [layoutConstraints copy]; |
| 611 } |
| 612 |
597 void AddSameCenterConstraints(UIView* view1, UIView* view2) { | 613 void AddSameCenterConstraints(UIView* view1, UIView* view2) { |
598 AddSameCenterXConstraint(view1, view2); | 614 AddSameCenterXConstraint(view1, view2); |
599 AddSameCenterYConstraint(view1, view2); | 615 AddSameCenterYConstraint(view1, view2); |
600 } | 616 } |
601 | 617 |
602 void AddSameCenterXConstraint(UIView* view1, UIView* view2) { | 618 void AddSameCenterXConstraint(UIView* view1, UIView* view2) { |
603 [view1.centerXAnchor constraintEqualToAnchor:view2.centerXAnchor].active = | 619 [view1.centerXAnchor constraintEqualToAnchor:view2.centerXAnchor].active = |
604 YES; | 620 YES; |
605 } | 621 } |
606 | 622 |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
684 | 700 |
685 // On iOS10 and above, trigger a haptic vibration for a notification. | 701 // On iOS10 and above, trigger a haptic vibration for a notification. |
686 // This is a no-op for devices that do not support it. | 702 // This is a no-op for devices that do not support it. |
687 void TriggerHapticFeedbackForNotification(UINotificationFeedbackType type) { | 703 void TriggerHapticFeedbackForNotification(UINotificationFeedbackType type) { |
688 if (base::ios::IsRunningOnIOS10OrLater()) { | 704 if (base::ios::IsRunningOnIOS10OrLater()) { |
689 UINotificationFeedbackGenerator* generator = | 705 UINotificationFeedbackGenerator* generator = |
690 [[UINotificationFeedbackGenerator alloc] init]; | 706 [[UINotificationFeedbackGenerator alloc] init]; |
691 [generator notificationOccurred:type]; | 707 [generator notificationOccurred:type]; |
692 } | 708 } |
693 } | 709 } |
OLD | NEW |