私はUIButtonを持っています。私はその画像を円形にするために背景画像のUIImageViewにアクセスしたいと思います。私はイメージ自体に影響を与えることができることを知っていますが、私はこれをもっとエレガントにすることを好むでしょう。私はまた、button.currentBackgroundImage
プロパティを使用してUIImageをバックグラウンドで取得できることも知っていますが、私はビュー自体が必要です。ビューを取得したら、このコードを使用します:UIButtonの背景画像のUIImageViewにアクセス
buttonImageView.layer.cornerRadius = buttonImageView.frame.size.width/2;
buttonImageView.clipsToBounds = YES;
buttonImageViewにはどのようにアクセスできますか?
EDIT: ため@ vhristoskovの提案に、私はこのコードでボタン自体をトリミングしようとした:
self.button.layer.cornerRadius = self.button.frame.size.width/2;
self.button.clipsToBounds = YES;
そしてそれは、この形状作られた:私はことを発見し、デバッグした後
をframe.size.widthは100だったはずの46だったので、代わりにこのコードを試しました:
self.button.layer.cornerRadius = self.button.currentBackgroundImage.size.width/2;
self.button.clipsToBounds = YES;
そしてそれは、この形状生成:
そして、cornerRadius
が65に設定されていた今回だから、実際に私の問題は、私は、現時点で正しい幅を持っていないということであるように思えます。正しい番号を取得するには、どのプロパティにアクセスすればよいですか?
if (self.myButton.subviews.count > 0 && [self.myButton.subviews[0] isKindOfClass:[UIImageView class]]) {
UIImageView *imageView = self.myButton.subviews[0];
imageView.layer.cornerRadius = imageView.frame.size.width/2;
imageView.clipsToBounds = YES;
}
が、サブビューの順序があるとして、それは、よりエレガントではありません。
[self.myButton setBackgroundImage:[UIImage imageNamed:@"image"] forState:UIControlStateNormal];
のviewDidLoadで
以前、あなたはその後、viewDidAppearで次のように呼び出すことができます:あなたが何かを呼ばれることを想定すると、
あなたのUIButtonに直接同じコードを適用しない理由はありますか? – vhristoskov
@vhristoskov hmmm私はちょうどそれを試み、私は奇妙な結果を得た、イメージは奇妙な形をしていた。あなたが望むなら、私の質問に起こったことのスクリーンショットを追加することができます。 – multitaskPro
これは素晴らしいでしょう。また、IB(またはボタンのフレームを設定するために使用したコード)に制約の画像を追加することもできます。 – vhristoskov