This PR adds adjustsFontForContentSizeCategory property to MDCFeatureHighlightViewController, allowing clients to have their scalable fonts adjust based on content size category changes.
Due to FeatureHighlight using an attributedText to set up the text for its labels, for the scalable fonts to adjust properly, the attributedText needs to have the font as an attribute. This is an interesting gotcha that was found while working on this PR.
Closes#8634
Adds a traitCollectionDidChangeBlock to MDCFeatureHighlightViewController and MDCFeatureHighlightView, called when its trait collection changes.
Additionally this moves the FeatureHighlightView test to a more generic name, instead of FeatureHighlightNoopTests they were moved to FeatureHighlightViewTests.
Closes#8050
Add support for the new dynamic type scaling curves to feature highlight.
The new curves are enabled by default, but a flag has been added allowing existing users to opt-in to the older behavior.
Removes the need to copy-paste stanzas from other files anymore as we'll rely on #4478 to generate the correct stanza for us instead.
This was an automated change generated by running a find-and-replace regular expression:
```
/\*
Copyright ([0-9]+)-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\.
\*/
```
```
/\*
Copyright ([0-9]+)-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\.
\*/
```
```
/\*
Copyright ([0-9]+)-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\.
\*/
```
```
// Copyright $1-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.
```
Removes the need to copy-paste stanzas from other files anymore as we'll rely on https://github.com/material-components/material-components-ios/pull/4478 to generate the correct stanza for us instead.
This was an automated change generated by running a find-and-replace regular expression:
### Find
```
/\*
Copyright ([0-9]+)-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\.
\*/
```
```
/\*
Copyright ([0-9]+)-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\.
\*/
```
### Replace
```
// Copyright $1-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.
```
* Feature Highlight must not load the view unless the view property is called or it's presented.
* fixed the tests,
added new tests for loading view,
Moved the logic for accessibility hint default to view controller,
Match the pattern of of MDCAlertController for not loading the view.
* moving the string files in to the right folder
* change the if logic to isViewLoaded for more clarity?
https://github.com/material-components/material-components-ios/pull/4234
Many internal clients are breaking because of this API change. Instead, we
should follow the deprecation policy so clients can make a gradual migration
to the final API.
This reverts commit 24be789f57aedb732ceddecc36699f52875dc8d6.
Reopens#3144
* Extracting Accessibility out of FeatureHighlightViewController to a mutator.
Tests added.
Example updated.
* Revert "Extracting Accessibility out of FeatureHighlightViewController to a mutator."
This reverts commit 0b5433ebf86366087b240c4dc4992a0603fa73e0.
* Feature Highlight Clean up.
* Update examples.
* make title and body font defaults a class property.
* Make MDCFeatureHighlightView public and update color setters for use with UIAppearance
* Change featureHighlightView to nonnull, fix formatting
* Update comment
* ClangFormat changes.
* Added swiftlint to scripts/format_all.`
* Fix scripts/lint_all to work from any directory.
* Fixed swiftlint invocation.
* Remove the checks for force casting (! operator).
* Some fixes.
* More Swift fixes.
* Use instance based inner radius
* Warning re ios sim
* Scale outer highlight to encircle inner highlight
* Dont scale innerhighlight pulsing with inner highlight size
* Reset highlight example supplemental:
* API Review for Feature Highlight component
Summary:
This is the proposed API for the Feature Highlight component.
For more info see the following links:
Design spec: https://material.googleplex.com/growth-communications/feature-discovery.html#feature-discovery-design
Tracking bug: b/30695049
Example usage
```
MDCFeatureHighlightViewController *vc = [[MDCFeatureHighlightViewController alloc] init];
vc.delegate = self;
vc.hintTitleText = @"...";
vc.hintBodyText = @"...";
[vc highlightView:_button];
[self presentViewController:vc animated:animated completion:completion];
```
In the delegate:
```
- (void)featureHighlightWasAccepted:(MDCFeatureHighlightViewController *)highlight {
// do accepted things here
[self dismissViewControllerAnimated:YES completion:nil];
}
- (void)featureHighlightWasIgnored:(MDCFeatureHighlightViewController *)highlight {
// do ignored things here
[self dismissViewControllerAnimated:YES completion:nil];
}
```
Reviewers: ajsecord, featherless, iangordon, O1 Material components iOS, randallli
Reviewed By: ajsecord, featherless, iangordon
Subscribers: randallli, iangordon, featherless, ajsecord
Tags: #material_components_ios
Differential Revision: http://codereview.cc/D1465
* Add MDCFeatureHighlightViewController
* Add Feature Highlight typical use
* Get Feature Highlight buildable
* Copy functionality over from prototype
* Accept/Reject highlight with animation
* Rotation
* Tap anywhere in the feature highlight typical use case demo to move the button
* Align highlight center and highlight point
* Layout text correctly
* Use sample text
* Use animated transitioning delegate for presentation and dismissal animations
* Clean up presentation + dismissal animation code
* Move intructional text behind button
* Limit width of text in feature highlight
* Layout text relative to center when noncentered
* Fix rotation
* First pass at feature highlight color example
* Properly map the inner and outer colors to the view
* Use correct license header
* Automatically choose text color based on outer highlight color
* Clean up color usage
* wrap long lines
* Clean up title positioning
* Clean up radius calculation
* Constize values
* Add feature highlight nav bar example
* Move examples up a directory
* Remove nav bar example
* Improve outer highlight color docs and implementation
* Add TODO: Mask the labels during the presentation and dismissal animations.
* Clean up feature highlight view
* Clean up feature highlight examples
* Layout feature highlight labels with support for RTL
* Code review improvements
* Clean up feature highlight samples
* Feature Highlight readme
* Update Podfile.lock for Feature Highlight
* Feature highlight readme improvements