から拡張するカスタム UIButton を作成しようとしていますUIButtonType.RoundedRect
。
追加した機能は機能していますが、ボタンの最初の丸い境界線の状態に問題があります。拡張ボタンの境界線は、タップされるまで描画されません。
更新 (2013 年 1 月 24 日): Richard Marskell の要求に応じて、ボタンのラベルのみが描画されていると結論付ける赤い背景テストの結果を追加しました。BackgroundColor = UIColor.Red;
以下は、カスタム ボタンを作成するためのソース コードです。
public class TestView : UIView
{
public TestView(IntPtr p) : base(p) { }
public TestView(RectangleF bounds)
{
Frame = bounds;
BackgroundColor = UIColor.White;
UIButton button1 = new UIButton(UIButtonType.RoundedRect);
button1.Frame = new RectangleF(20,20,100,50);
button1.SetTitle("Button 1", UIControlState.Normal);
AddSubview(button1); // Drawn Correctly
MyButton button2 = new MyButton();
button2.Frame = new RectangleF(20,90,100,50);
button2.SetTitle("Button 2", UIControlState.Normal);
AddSubview(button2); // Only drawn correctly after Tap
// EDIT: Added to test Miguel's theory
UIButton button3 = UIButton.FromType(UIButtonType.RoundedRect);
button3.Frame = new RectangleF(20,160,100,50);
button3.SetTitle("Button 3", UIControlState.Normal);
AddSubview(button3); // Drawn Correctly
}
}
public class MyButton : UIButton
{
public MyButton() : base(UIButtonType.RoundedRect) { }
}
- ビューの読み込み時に境界線を強制的に正しく描画する方法がわかりません。
UIButtonType.Custom
自分でボタンのスタイルを設定したくないので、type のボタンは必要ありません。- デバッグすると、MyButton のタイプが正しく設定され
UIButtonType.RoundedRect
ます。 - MyButton (button2) の UIButton 基本プロパティは、UIButton インスタンス (button1) のプロパティと一致します。
この問題を解決するにはどうすればよいですか?
更新 (2013 年 1 月 31 日): Herman Schoenfeld は、このバグに対する適切な解決策を提供しました。