2016-05-09 6 views
1

subViewUIButtonに追加しました。次に、カスタマイズしたUIButtonのボタンサブクラスをStoryboardから作成しましたが、subViewの境界が正しく設定されていませんでした。カスタマイズされたUIButtonのサブビューが適切な位置になかった

予想:私が代わりに得たもの

enter image description here

:私のUIButtonをカスタマイズして、非常にシンプルなの

enter image description here

コード:

import UIKit 
@IBDesignable 

class RoundShadowButton: UIButton { 

    var backLayer: UIView! 

    override func drawRect(rect: CGRect) { 
     setup() 
    } 

    func setup() { 
     backLayer = UIView() 

     //add the subView 
     backLayer?.bounds = bounds 
     backLayer!.layer.cornerRadius = 10.0 
     backLayer?.layer.masksToBounds = false 
     backLayer!.layer.borderColor = UIColor.redColor().colorWithAlphaComponent(0.3).CGColor 
     backLayer!.layer.borderWidth = 1.0 
     backLayer.clipsToBounds = false 
     addSubview(backLayer) 

     //add shadow to layer of UIButton 
     layer.shadowColor = UIColor.blackColor().CGColor 
     imageEdgeInsets = UIEdgeInsetsMake(9, 32, 9, 32) 
     layer.shadowOffset = CGSizeMake(0.0, 0.5) 
     layer.shadowRadius = 1.0 
     layer.shadowOpacity = 0.7 
     layer.masksToBounds = false 
     clipsToBounds = false 
    } 

問題を解決するにはどうすればよいですか? 「でno:

答えて

1

あなたは、なぜあなたは "のdrawRect(CGRect RECT)" に設定をしました。このような何か

override func layoutSubviews() 
{ 
    super.layoutSubviews() 
    backLayer.frame = bounds 
} 

、あなたの裏打ちのサブビューのフレームを設定する ")FUNC layoutSubviews(" メソッドをオーバーライドしますinit?(コーダデコーダ:NSCoder) "または" func awakeFromNib() "?

+0

ありがとうございました。私は 'func layoutSubviews()'をオーバーライドせず、 'backLayer.bounds = bounds'を' backLayer.frame = bounds'に変更しました。あなたの質問のために、私は 'drawRect'でセットアップを行います。なぜなら私はストーリーボードに表示された変更をしたいからです。 – luiyezheng

関連する問題