![](/img/trans.png)
[英]UISegmentedControl segment width of is not set when the background image is set
[英]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.