0

cocoacontrols.com のBASequenceControlを使用して、 DirectionテーマでUISegmentedControlを実装しました。

BASequenceControl.hおよびBASequenceControl.mクラスと、必要なイメージをGitHubから追加しました。

偉大な。私にとってはうまく機能しています..しかし、最後のセグメントセクションのヒントに懸念があります。

最後のセグメント セクションのジャンク スペースを表示します。

元のスクリーンショット

ここに画像の説明を入力

私はこのような必要があります

ここに画像の説明を入力

私が実装したコード

        #import "BASequenceControl.h"

BASequenceControl *bASequenceControl = [[BASequenceControl alloc] init];                                    
bASequenceControl.frame = CGRectMake(10, 10, 200, 44);
[bASequenceControl addSegmentWithTitle:@"First" animated:NO];
[bASequenceControl addSegmentWithTitle:@"Second" animated:NO];

bASequenceControl.leftMargin = -22;
bASequenceControl.rightMargin = 0;
bASequenceControl.overlapWidth = 22;

[self.view addSubview:bASequenceControl];

これに関するヘルプをいただければ幸いです。

ありがとう。

4

2 に答える 2

2

これは非常に簡単な修正です。BASequenceControl.m ファイルを編集するか、クラスを複製して名前を変更する必要があります。

問題の原因となっている行は、drawRect:基本的にコントロールの背景全体に灰色の矢印を描画します。空きスペースに素敵なグラデーションを作成します。

[passiveSegmentImage drawInRect:CGRectMake(-passiveSegmentImage.size.width, 0,
                                           w + 2 * passiveSegmentImage.size.width, h)];

次のように変更できます。

[passiveSegmentImage drawInRect:CGRectMake(0, 0,
                                           w, h)];

ここで、不透明であってはならないことをコントロールに伝える必要があります。このように初期化子を更新します。

- (void)awakeFromNib {
    _selectedSegmentIndex = -1;
    [self setOpaque:NO];
    [super awakeFromNib];
}

- (id)init {
    if ((self = [super init])) {
        [self setOpaque:NO];
        _selectedSegmentIndex = -1;
    }
    return self;
}

これは非常に手っ取り早いですが、プロパティを使用して設定可能にすることができます。それから BaseAppKit にプル リクエストを送信しますが、それはあなたに任せます。これは、オーバーハングを修正するために BASequenceControl.m に直接コピー アンド ペーストできる要点です。 https://gist.github.com/4632686

編集:initイニシャライザとして使用していることを確認してから(クラスでオーバーライドされなかったsetFrame:理由はよくわかりません。)initWithFrame:

BASequenceControl *control = [[BASequenceControl alloc] init];
[control setFrame:CGRectMake(0, 0, 300, 40)];

固定コントロール、劇的な効果のための緑

劇的な効果のための緑の背景

于 2013-01-25T08:24:29.760 に答える
0

このようなマスクを使用するのはどうですか:

ここに画像の説明を入力

あなたのSegmentedControlをマスクする

于 2013-01-25T03:16:28.120 に答える