mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-09-11 15:10:37 +00:00
Previously we were only propagating the trait collection on `viewWillTransitionToSize` since it is called shortly after `willTransitionToTraitCollection`. However, some important things can happen in that time “shortly after” (like collection view layout). As long as nothing changes from `willTransitionToTraitCollection` to `viewWillTransitionToSize` (which it shouldn’t) the traits will not be re-propagated anyhow. Also make sure to use the `ASEnvironmentTraitCollectionMakeDefault` method when creating new envTraitCollection so the struct isn’t filled with junk.
72 lines
2.5 KiB
Plaintext
72 lines
2.5 KiB
Plaintext
//
|
|
// ASEnvironment.mm
|
|
// AsyncDisplayKit
|
|
//
|
|
// Copyright (c) 2014-present, Facebook, Inc. All rights reserved.
|
|
// This source code is licensed under the BSD-style license found in the
|
|
// LICENSE file in the root directory of this source tree. An additional grant
|
|
// of patent rights can be found in the PATENTS file in the same directory.
|
|
//
|
|
|
|
#import "ASEnvironmentInternal.h"
|
|
#import "ASAvailability.h"
|
|
|
|
ASEnvironmentLayoutOptionsState ASEnvironmentLayoutOptionsStateMakeDefault()
|
|
{
|
|
return (ASEnvironmentLayoutOptionsState) {
|
|
// Default values can be defined in here
|
|
};
|
|
}
|
|
|
|
ASEnvironmentHierarchyState ASEnvironmentHierarchyStateMakeDefault()
|
|
{
|
|
return (ASEnvironmentHierarchyState) {
|
|
// Default values can be defined in here
|
|
};
|
|
}
|
|
|
|
ASEnvironmentTraitCollection ASEnvironmentTraitCollectionMakeDefault()
|
|
{
|
|
return (ASEnvironmentTraitCollection) {
|
|
// Default values can be defined in here
|
|
.userInterfaceIdiom = UIUserInterfaceIdiomUnspecified,
|
|
.containerSize = CGSizeZero,
|
|
};
|
|
}
|
|
|
|
ASEnvironmentTraitCollection ASEnvironmentTraitCollectionFromUITraitCollection(UITraitCollection *traitCollection)
|
|
{
|
|
ASEnvironmentTraitCollection environmentTraitCollection = ASEnvironmentTraitCollectionMakeDefault();
|
|
if (AS_AT_LEAST_IOS8) {
|
|
environmentTraitCollection.displayScale = traitCollection.displayScale;
|
|
environmentTraitCollection.horizontalSizeClass = traitCollection.horizontalSizeClass;
|
|
environmentTraitCollection.verticalSizeClass = traitCollection.verticalSizeClass;
|
|
environmentTraitCollection.userInterfaceIdiom = traitCollection.userInterfaceIdiom;
|
|
if (AS_AT_LEAST_IOS9) {
|
|
environmentTraitCollection.forceTouchCapability = traitCollection.forceTouchCapability;
|
|
}
|
|
}
|
|
return environmentTraitCollection;
|
|
}
|
|
|
|
BOOL ASEnvironmentTraitCollectionIsEqualToASEnvironmentTraitCollection(ASEnvironmentTraitCollection lhs, ASEnvironmentTraitCollection rhs)
|
|
{
|
|
return
|
|
lhs.verticalSizeClass == rhs.verticalSizeClass &&
|
|
lhs.horizontalSizeClass == rhs.horizontalSizeClass &&
|
|
lhs.displayScale == rhs.displayScale &&
|
|
lhs.userInterfaceIdiom == rhs.userInterfaceIdiom &&
|
|
lhs.forceTouchCapability == rhs.forceTouchCapability &&
|
|
CGSizeEqualToSize(lhs.containerSize, rhs.containerSize);
|
|
}
|
|
|
|
ASEnvironmentState ASEnvironmentStateMakeDefault()
|
|
{
|
|
return (ASEnvironmentState) {
|
|
.layoutOptionsState = ASEnvironmentLayoutOptionsStateMakeDefault(),
|
|
.hierarchyState = ASEnvironmentHierarchyStateMakeDefault(),
|
|
.environmentTraitCollection = ASEnvironmentTraitCollectionMakeDefault()
|
|
};
|
|
}
|
|
|