簡體   English   中英

如何在UISegmentedControl中設置禁用段的背景圖像

[英]How to set background image for disabled segment in UISegmentedControl

我試圖在UISegmentedControl中將顏色設置為禁用的段。 但尚未成功。 我想知道是否可以在UISegmentedControl中為禁用的段設置背景圖像。

我已經嘗試了以下代碼,但無法正常工作:

NSDictionary *attrs = @{ UITextAttributeTextColor : [UIColor lightGrayColor] };
[self.controlStatus setTitleTextAttributes:attrs forState:UIControlStateDisabled];

[self.controlStatus setBackgroundImage:[[UIImage imageNamed:@"img.png"] retain] forState:UIControlStateDisabled barMetrics:nil];

第一條兩條線都在工作。 禁用時,我可以設置顏色,但不能設置背景圖像或背景顏色。

有什么辦法做到這一點?

更新:您將必須通過以下方式進行操作。

[[UISegmentedControl appearance] setBackgroundImage:[UIImage imageNamed:@"SegmentViewDisabled"]
                                    forState:UIControlStateDisabled
                                    barMetrics:UIBarMetricsDefault];

如果您將分隔器圖像設置為禁用狀態,則看起來您將遇到Apple的錯誤,請參見此處

-------------------下面不起作用--------------------

您可以這樣進行。 其中SegmentViewDisabled是圖像資產目錄中的圖像資產。

[self.controlStatus setBackgroundImage:[UIImage imageNamed:@"SegmentViewDisabled"] forState:UIControlStateDisable barMetrics:UIBarMetricsDefault];

UISegmentControl在兩個段之間有一個分隔線。 通過使用以下代碼,您可以更改分隔線的背景。

[segmentedCtrl setDividerImage:[UIImage imageNamed:@"divider_selected.png"] forLeftSegmentState:UIControlStateSelected rightSegmentState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[segmentedCtrl setDividerImage:[UIImage imageNamed:@"divider_normal.png"] forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateNormal barMetrics:UIBarMetricsDefault];

如果您需要自定義分段控件的外觀,而不是標准着色,則可以考慮使用自定義圖像。 由於分段控件在縱向和橫向設備方向上具有不同的度量標准,因此請記住為每組度量標准指定適當的圖像。

您可以使用backgroundImageForState:barMetrics:方法為分段控件的每個控件狀態設置背景圖像。 您還應該為左右段狀態的每種組合指定分隔線圖像,以使選定或突出顯示的段與正常狀態下的段具有不同的外觀,如下所示:

image1,image2,image3是不同的圖像

    [mySegmentedControl setDividerImage:image1 forLeftSegmentState:UIControlStateNormal  rightSegmentState:UIControlStateNormal barMetrics:barMetrics];

    [mySegmentedControl setDividerImage:image2 forLeftSegmentState:UIControlStateSelected rightSegmentState:UIControlStateNormal barMetrics:barMetrics];

    [mySegmentedControl setDividerImage:image3 forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateSelected barMetrics:barMetrics];

資源

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM