コードを使用してこのボタンを再作成し、再利用可能なオブジェクトにします。最小の幅、高さ、またはアイコンとラベルに合わせて伸ばすことができます。アプリ全体で、ボタンをいくつかの領域で再利用します。ボタンには、細い丸みを帯びた長方形のストローク、背景色、アイコン(trans PNG)、およびラベルが含まれます。ボタンのオン/オフを切り替えることができるように、背景色とストロークの色を構成可能にします。
編集:ほぼ機能するコードですが、テキストラベルブロックは白であり、フレームに収まるように画像のサイズを変更し、両方を中央に配置する必要があります。
カスタムボタンコード:
#import "CustomButton.h"
@implementation CustomButton
- (id)initWithFrame:(CGRect)frame image:(NSString *)image title:(NSString *)title background:(UIColor *)background border:(UIColor *)border
{
self = [super initWithFrame:frame];
if (self)
{
self = [UIButton buttonWithType:UIButtonTypeCustom];
CALayer *layer = [self layer];
self.contentVerticalAlignment = UIControlContentVerticalAlignmentBottom;
self.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;
// background
if (background) {
layer.backgroundColor = (__bridge CGColorRef)(background);
} else {
layer.backgroundColor = [[UIColor darkGrayColor] CGColor];
}
// border
if (border) {
layer.borderColor = (__bridge CGColorRef) (border);
} else {
layer.borderColor = [[UIColor lightGrayColor] CGColor];
}
layer.cornerRadius = 2.0f;
layer.borderWidth = 0.5f;
// icon
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:image]];
[self addSubview:imageView];
// text label
UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 25, 55, 15)];
titleLabel.font = [[UIFont alloc] fontWithSize:7.00];
titleLabel.text = title;
[self addSubview:titleLabel];
[self setFrame:frame];
}
return self;
}
@end
編集:上記のコードブロックを更新し、viewControllerのそれぞれのビューに次のコードを使用して表示されるボタンを取得しました:
CGRect buttonFrame = CGRectMake(125, 3, 52, 37);
CustomButton *btnNearby = [[CustomButton alloc] initWithFrame:buttonFrame image:@"map.png" title:@"NEARBY" background:nil border:nil];
[myCustomView addSubview:btnNearby];
カスタムボタンが表示されますが、まだ正しくフォーマットされていません。
これは、ボタンの中央に表示されるアイコンの例(トランス付きの白いPNG)です。
必要な機能の概要:
1)再利用可能なボタン2)最小の幅/高さまたはオーバーライドしてラベルの幅と画像の高さ+ラベルに一致させることができます3)設定可能なストロークの色を使用する4)上のボタンのアイコンをストローク+アイコン+ラベル+背景色に一致させる5)変更することができますオン/オフを切り替える境界線の色