IOS7 には、背景のアルファ チャネルが .5 に設定されたボタンがいくつかあります (したがって、それらの背後にある画像が多少見えるようになります)。唯一の欠点は、ボタン面のテキストも薄暗くなることです。ボタンの下で を使用して、UIView
アルファを .5 に設定してみました。これは機能しますが、石畳のようなものです。また、両方の項目の制約を管理するのは少し面倒です。背景のアルファ設定を低く保ちながら、ボタンのテキストを明るく鮮明にする方法はありますか?
質問する
473 次
2 に答える
0
これは、 を使用してあまり手間をかけずに実行できますCoreGraphics
。これがまさにこれを行うために作成したクラスです。(SODimButton
この回答の例として名前を付けました。)ここに投稿されたコードは、この要点にもあります。
SODimButton.h
#import <UIKit/UIKit.h>
@interface SODimButton : UIButton
@property (nonatomic, strong) UIColor *buttonColor;
@property (nonatomic, strong) UIColor *selectedButtonColor;
@property (nonatomic) CGFloat backgroundAlpha;
@end
SODimButton.m
#import "SODimButton.h"
@implementation SODimButton
- (void)drawRect:(CGRect)rect {
// More drawing can be done if you get the context.
// I actually don't use it in this example.
CGContextRef context = UIGraphicsGetCurrentContext();
if (self.selected || self.highlighted) {
[[self.selectedButtonColor colorWithAlphaComponent:self.backgroundAlpha] setFill];
} else {
[[self.buttonColor colorWithAlphaComponent:self.backgroundAlpha] setFill];
}
UIRectFill(rect);
}
- (void)setSelected:(BOOL)selected {
[super setSelected:selected];
[self setNeedsDisplay];
}
- (void)setHighlighted:(BOOL)highlighted {
[super setHighlighted:highlighted];
[self setNeedsDisplay];
}
@end
…そして、コントローラーでそれを使用する方法は次のとおりです。
MyViewController.m (でviewDidLoad
)
SODimButton *button = [[SODimButton alloc] initWithFrame:CGRectMake(self.view.frame.size.width / 2 - 100, 50, 200, 44)];
[button setTitle:@"My Button" forState:UIControlStateNormal];
[button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
button.buttonColor = [UIColor redColor];
button.selectedButtonColor = [UIColor colorWithRed:0.73f green:0.10f blue:0.00f alpha:1.00f];
button.backgroundAlpha = 0.2f;
[self.view addSubview:button];
簡単なテストと実験のために、このリンクにすべてのコードを(少なくともしばらくの間) 入れました。楽しみ!
于 2013-10-14T18:02:50.360 に答える
-1
数日後、それを理解できなかったので、半透明のボタンの上にラベルを追加し、回転用のボタンと並べておくためのいくつかの制約を加えました.
于 2013-10-10T17:04:30.220 に答える