1

私はタイプ RoundedRect のペン先にいくつかの UIButtons を持っていましたが、これは iOS 6 より前は見栄えがよくフラットでした。iOS 6 では、私が取り除くことができない 3D 効果の境界線を取得しました (私は写真を提供しますが、私の評判はあまりにも貧弱です)。素敵なフラットな外観を取り戻す方法を誰か提案できますか?

これは私がこれまでに尋ねた中で最もばかげた質問であることが判明し、その答えは非常に単純で、1週間自分自身を蹴ることになると確信しています. しかし、私はそれを見つけることができず、どんな助けも大歓迎です。

4

1 に答える 1

1

なぜその効果が現れたのかはわかりませんが、これを行う1つの方法はRounded Rectを避けることです. 私はいつもカスタムボタンを使用しています。これらはコードで自由にカスタマイズできます。

例えば:

button.layer.cornerRadius = 8;  //this gives it rounded corners
button.layer.borderColor = [[UIColor redColor] CGColor] ; // this is how you set a border
button.layer.borderWidth = 2; //this is how you set the width of the border

UIButton のレイヤー メンバーは CALayer であり、シャドウを設定できます。これは良いチュートリアルです。

次のように、ボタンをより良くするためにグラデーションの背景を追加することもできます。

CAGradientLayer *layer = [CAGradientLayer layer];

layer.colors = [NSArray arrayWithObjects:
                (id)[[UIColor colorWithRed:skinRed green:skinGreen blue:skinBlue alpha:0.9] CGColor],
                (id)[[UIColor colorWithRed:skinRed green:skinGreen blue:skinBlue alpha:0.8] CGColor],
                (id)[[UIColor colorWithRed:skinRed green:skinGreen blue:skinBlue alpha:0.7] CGColor],
                (id)[[UIColor colorWithRed:skinRed green:skinGreen blue:skinBlue alpha:0.6] CGColor],
                (id)[[UIColor colorWithRed:skinRed green:skinGreen blue:skinBlue alpha:0.5] CGColor],
                (id)[[UIColor colorWithRed:skinRed green:skinGreen blue:skinBlue alpha:0.4] CGColor],
                (id)[[UIColor colorWithRed:skinRed green:skinGreen blue:skinBlue alpha:0.3] CGColor],
                (id)[[UIColor colorWithRed:skinRed green:skinGreen blue:skinBlue alpha:0.2] CGColor],
                (id)[[UIColor colorWithRed:skinRed green:skinGreen blue:skinBlue alpha:0.1] CGColor],
                (id)[[UIColor colorWithRed:skinRed green:skinGreen blue:skinBlue alpha:0.0] CGColor],
                nil];

layer.locations = [NSArray arrayWithObjects:
                   [NSNumber numberWithFloat:0.1],
                   [NSNumber numberWithFloat:0.2],
                   [NSNumber numberWithFloat:0.3],
                   [NSNumber numberWithFloat:0.4],
                   [NSNumber numberWithFloat:0.5],
                   [NSNumber numberWithFloat:0.6],
                   [NSNumber numberWithFloat:0.7],
                   [NSNumber numberWithFloat:0.8],
                   [NSNumber numberWithFloat:0.9],
                   [NSNumber numberWithFloat:1.0],
                   nil];

layer.startPoint        = CGPointMake(0, 0);
layer.frame             = button.layer.bounds;

layer.endPoint          = CGPointMake(0, 1);
layer.contentsGravity   = kCAGravityResize;
[button.layer insertSublayer:layer below:button.titleLabel.layer];

button.layer.masksToBounds = TRUE;

ご覧のように、アプリのスキンの RGB を定義するグローバルな int 変数をいくつか用意するとよいでしょう。このようにして、数秒で変更できます。

したがって、この方法を使用することで、Apple が SDK のバージョンに対して行った変更の影響を受けなくなります。また、必要に応じてカスタマイズすることもでき、IB で得られるよりもはるかに多くのことを達成できます。

お役に立てれば。

乾杯!

于 2012-10-04T12:05:25.213 に答える