2016-07-06 10 views
0

私はSwiftで働いており、プログラムでボタンを作成しました。私は自動レイアウトで多くの問題を抱えていたので、私はプログラム的に物事を作るときに比率を使用します。私は5秒でそれを実行するので、比率は正しいです。私のコード:スウィフト - プログラムで作成されたボタンは完全な円ではありませんか?フラットエッジ?

menuBtn1.frame = CGRectMake(0, 0, screenSize.width * (50/330), screenSize.height * (50/568)) 
     menuBtn1.backgroundColor = colorWithHexString(chosenColor) 
     menuBtn1.layer.cornerRadius = menuBtn1.bounds.width*0.5 
     menuBtn1.clipsToBounds = true 
     menuBtn1.center = CGPointMake(screenSize.width * 0.5, screenSize.height * (0.88)) 
     menuBtn1.addTarget(self, action: ":", forControlEvents: UIControlEvents.TouchUpInside) 
     self.view.addSubview(menuBtn1) 

比率はわずか50に高さと幅を設定するときに、私もこの問題を持っていた問題と50マイサークル私たち完璧ではないかもしれないが - それは平らなエッジを持っている: enter image description here

これは大きな問題ではありませんが、見栄えが良くありません。どうすれば完璧なサークルを作ることができますか?なぜ縁があるのですか?あなたのwidthheightが等しくないためである

enter image description here

答えて

0

コーナー半径を半分の幅で使用するアプローチは、元のボタンの形状が本質的に「正方形」の場合にのみ機能します。あなたの幅と高さが等しくないので、あなたは長方形をしています。

これは、高さよりはるかに長い幅のシェイプがあれば、より明らかになります。次に、角の半径はまったく円形に見えませんが、丸みを帯びた矩形のように見えます。

これは数学的な概念です。

は、任意の質問をお気軽に:)

1

を円がに等しくなるようにそのwidthを必要とheight次のとおりです。

CGRectMake(0, 0, screenSize.width * (50/330), screenSize.height * (50/568)) 

は間違いなくその前提条件が失敗します。

あなたはおそらくしたい:

let size = screenSize.width * (50/330) 
menuBtn1.frame = CGRectMake(0, 0, size, size) 
+0

おかげで、私はそれをしたが、まだ問題を抱えて(問題の写真を参照してください) – skyguy

関連する問題