2016-07-24 7 views
0

最初に、ストーリーボードのボタンに制約を設定しました。その後、コードを編集して見栄えを良くしました。 ボタンにグラデーション機能を適用すると、以前よりも大きくなります。どのように修正するのですか?グラデーション適用時のボタンストレッチ

extension UIView { 
    func applyGradient(colours: [UIColor]) -> Void { 
     self.applyGradient(colours, locations: nil) 
    } 

    func applyGradient(colours: [UIColor], locations: [NSNumber]?) -> Void { 
     let gradient: CAGradientLayer = CAGradientLayer() 
     gradient.frame = self.bounds 
     gradient.colors = colours.map { $0.CGColor } 
     gradient.locations = locations 
     self.layer.insertSublayer(gradient, atIndex: 0) 
    } 
} 

は、私はちょうど今後、それはこのようになっていることを Here is the pic...

が...何もIt goes way outside frame PLZPLZPLZてみたの拘束勾配が私を助けるために:)私はウルの助けに感謝...ボタン一つでそれを適用し、これまでのバージョン

答えて

0

self.layer.masksToBounds = trueを関数に追加します。これは、追加したサブレイヤがボタンの元のフレームの外側に描画されないことを意味します

EDIT: また、シャドウも同様に、影をクリップするので、self.layer.masksToBoundsをfalseに設定する必要がありますあまりにも。

代わりにgradient.frame = self.layer.boundsを試してください。

+0

タイプCALAyerの値にはメンバーがありません。ToBounds ...何をするか –

+0

申し訳ありませんでしたが、回答が更新されました – Luke

+0

実際にはグラデーションはありますが、追加したシャドウは.MaskstoBounds ...私はした button.layer.borderWidth = 2.9 button.layer.shadowRadius = 1.0 buttonLayer.shadowOffset = CGSizeMake(0,3)元のフレームに収まらなかったので、おそらく、影が消えてしまった。その –

関連する問題