Skip to content

Crash "Index out of range" when not using UIDesignRequiresCompatibility flag in Info.plist #37

@GustavoHoreste

Description

@GustavoHoreste

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions