UIButton背景并不涵盖整个视图

时间:2015-02-18 07:58:10

标签: ios ios7 xamarin xamarin.mac

我使用uibutton在标题中显示一些文本,有时文本很长,我设置

text.TitleLabel.LineBreakMode = UILineBreakMode.WordWrap; 

当有2行或更多行时,背景没有足够的高度 enter image description here

这是我的按钮代码:

text = new UIButton ();
        text.Layer.CornerRadius = 5;
        text.Font = UIFont.FromName ("DIN Condensed", text.Font.PointSize);

        text.SetTitle (Original._hint, UIControlState.Normal);
        text.SizeToFit ();
        text.TitleLabel.LineBreakMode = UILineBreakMode.WordWrap; 

        var rec = new UILongPressGestureRecognizer (() => {     

            text.Frame = new CGRect ((UIApplication.SharedApplication.KeyWindow.Frame.Width / 2.0f) - (250 / 2.0f),
                this.Superview.Superview.Superview.Frame.Height / 2.0f,250, text.Frame.Height);
            Animate (0.6f, () => {
                this.Superview.Superview.Superview.AddSubview (text);
            }, () => {
                text.Layer.ZPosition = int.MaxValue;
            });

            viewToremove=text;
        });


        text.SetTitleColor (UIColor.White, UIControlState.Normal);
        text.BackgroundColor = UIColor.Black;

        TargetView.AddGestureRecognizer (rec);

3 个答案:

答案 0 :(得分:0)

让事情更清楚:

  1. 通过显示切片here,可以在图像资源目录中轻松完成图像的可伸缩性,这将保证您的按钮在角落中也保持相同的方面
  2. 使用按钮插入,您可以在IB中执行此操作 Inset 我会避免使用为UIButton添加手势识别器,但我认为无论如何都会有效。

答案 1 :(得分:0)

我认为您的问题可能是由.SizeToFit()方法造成的。通常,您希望.SizeToFit()方法是UIButton的最后一次修改,或任何其他控件。这是为了防止.Frame问题,并且文本没有正确显示。这可能也适用于UIButton的背景。所以:

  • 初始化你的按钮(我通常保持宽度静态(screenwidth)并将高度设置为高数字,如200或者其他)。
  • 修改其属性(包括.Title和.BackgroundColor)
  • 添加委托或事件处理程序。
  • 使用.SizeToFit();
  • 缩小按钮

让我知道它是否有效。祝你好运!

爱和问候, 的Björn

答案 2 :(得分:0)

您是否尝试过使用9patch drawable作为背景图片?这些设计专门针对您不确定内容长度并要求背景图像拉伸/缩小以适应的情况。更多信息here