Description:
There is a critical dependency between the SSCustomTabBar framework and the iOS Compatibility Mode. When the flag UIDesignRequiresCompatibility is set in the Info.plist, it changes how UITabBar manages its internal view hierarchy.
Current Behavior:
The framework relies on filtering tabBar.subviews to find UIControl elements. In modern iOS environments, if this flag is not handled correctly, the subviews array returns empty or incomplete at the moment of execution, leading to the fatal error: Thread 1: Fatal error: Index out of range in the line: performSpringAnimation(for: orderedTabBarItemViews[index], changeValue: changeValue)
Mandatory Requirement:
For the framework to function as expected and correctly map the tab bar items to their respective views, the following key must be added to the Info.plist:
Key: UIDesignRequiresCompatibility
Type: Boolean
Value: YES
Important Note on Expiration: It is important to highlight that this flag is a legacy compatibility feature provided by Apple. It has an "expiration time" (is subject to deprecation), meaning that relying on it for the framework to work poses a long-term maintenance risk, as Apple may remove support for this compatibility layer in future iOS releases.
Description:
There is a critical dependency between the SSCustomTabBar framework and the iOS Compatibility Mode. When the flag UIDesignRequiresCompatibility is set in the Info.plist, it changes how UITabBar manages its internal view hierarchy.
Current Behavior:
The framework relies on filtering tabBar.subviews to find UIControl elements. In modern iOS environments, if this flag is not handled correctly, the subviews array returns empty or incomplete at the moment of execution, leading to the fatal error: Thread 1: Fatal error: Index out of range in the line: performSpringAnimation(for: orderedTabBarItemViews[index], changeValue: changeValue)
Mandatory Requirement:
For the framework to function as expected and correctly map the tab bar items to their respective views, the following key must be added to the Info.plist:
Key: UIDesignRequiresCompatibility
Type: Boolean
Value: YES
Important Note on Expiration: It is important to highlight that this flag is a legacy compatibility feature provided by Apple. It has an "expiration time" (is subject to deprecation), meaning that relying on it for the framework to work poses a long-term maintenance risk, as Apple may remove support for this compatibility layer in future iOS releases.