簡體   English   中英

以編程方式為UIButton創建突出顯示的狀態背景圖像

[英]Create highlighted state background image programmatically for UIButton

我使用以下代碼以編程方式創建了UIBarButton:

UIButton * rightButton = [UIButton buttonWithType:UIButtonTypeCustom];    
[rightButton setFrame:CGRectMake(0, 0, 81, 30)];
[rightButton setBackgroundColor:[UIColor clearColor]];     
rightButton.layer.borderColor = [UIColor blackColor].CGColor;
rightButton.layer.borderWidth = 0.5f;
rightButton.layer.cornerRadius = 5.0f;
rightButton.titleLabel.font = [UIFont fontWithName:@"HelveticaNeue-Bold" size:12];
[rightButton setTitleShadowColor:[UIColor blackColor] forState:UIControlStateNormal];
[rightButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
//set text according to sign in status
if (signIn) {
    [rightButton setTitle:@"5 votes left" forState:UIControlStateNormal]; 
} else {
    [rightButton setTitle:@"Sign in" forState:UIControlStateNormal];   
}

UIBarButtonItem * rightBarButton = [[UIBarButtonItem alloc] initWithCustomView:rightButton];
self.navigationItem.rightBarButtonItem = rightBarButton;

獲得的按鈕具有所需的外觀,但是現在我需要的是,當按鈕的狀態突出顯示時,應該有一個漸變為黑色的漸變效果,以使用戶知道他已經按下了按鈕,因為現在當我按下按鈕時按鈕,視圖沒有任何反應,因此用戶無法知道他已按下按鈕。

我想探索一個不涉及為所需狀態設置背景圖像的選擇,因為按鈕的文本可以根據應用程序配置動態變化,因此我需要完全通過代碼來完成。

盡管這不會直接回答您的問題,但可能會有所幫助。 我必須為按鈕動態創建一些圖形,並想出了一種使用核心圖形創建按鈕圖像的方法。 它使我可以靈活地在代碼中參數化地更改外觀,它在抽象的圖形上下文中繪制按鈕圖像,然后將結果轉換為可用於按鈕的圖像。 您可能會從我的解釋中得到足夠的好處,您可以根據需要自己嘗試。

子類化UIButton並添加CALayer或CAGradientLayer以實現所需的突出顯示效果。 將高亮層的初始狀態設置為隱藏。 覆蓋setHighlighted:類似:

- (void) setHighlighted:(BOOL)highlight {
    highlightLayer.hidden = !highlight;
    [super setHighlighted:highlight];
}

暫無
暫無

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

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