You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS15下自定义UIButton类构造函数设置的属性被忽略问题求助

你遇到的问题确实是iOS 15新增的UIButton样式机制导致的。

问题原因

iOS 15为UIButton引入了UIButton.Configuration 配置式样式管理体系,默认情况下所有新建UIButton实例会开启AutomaticallyUpdatesConfiguration开关,系统会在构造函数执行完成后自动应用默认的配置值,直接覆盖你通过传统SetTitle(_:for:)、直接修改属性等旧API写入的配置,就会出现构造函数执行成功但配置不生效的现象。
UILabel没有引入同类配置式管理机制,所以原有自定义逻辑不受iOS 15影响。

解决方案

方案1:沿用旧API逻辑(快速适配)

只需在构造函数开头关闭自动更新配置的开关,原有代码无需修改即可正常运行:

public class AppButton : UIButton
{
    public AppButton(IntPtr handle) : base(handle)
    {
        // iOS15适配代码
        if (UIDevice.CurrentDevice.CheckSystemVersion(15, 0))
        {
            AutomaticallyUpdatesConfiguration = false;
        }
        
        SetTitle("Hello", UIControlState.Normal); 
        Alpha = .2f;
    }
}

方案2:使用新Configuration API(推荐长期适配)

直接适配iOS 15新增的配置API,符合系统后续的设计规范:

public class AppButton : UIButton
{
    public AppButton(IntPtr handle) : base(handle)
    {
        if (UIDevice.CurrentDevice.CheckSystemVersion(15, 0))
        {
            var buttonConfig = UIButtonConfiguration.PlainButtonConfiguration;
            buttonConfig.Title = "Hello";
            Configuration = buttonConfig;
        }
        else
        {
            SetTitle("Hello", UIControlState.Normal);
        }
        Alpha = .2f;
    }
}

内容的提问来源于stack exchange,提问作者Jonathan F.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 05:15:01