自定义大小的UIAlertView iOS中的中心标题和按钮

时间:2011-08-02 20:12:15

标签: ios ipad uialertview

我正在使用alertViews向其加载不同的对象,例如textFields和其他对象。 使用textFields没有问题。我已经成功添加了一个UIPickerView作为我的alertView的子视图,我已经调整了alertView.frame的大小以正确保存pickerView,但是后来alertView中的标题和按钮没有居中。 我尝试了很多选项[alertView ... function ...]但似乎没有一个可以解决这个问题。这在自定义大小的alertView中看起来很糟糕。有什么建议吗?

谢谢大家!

1 个答案:

答案 0 :(得分:0)

要解决标题问题,我从这篇文章中获得灵感:Custom AlertView With Background

首先,当App呈现alertView时,我调用了一个NSLog来获取:

  • pickerView(我的子视图)宽度
  • _titleLabel的宽度
  • _titleLabel的起始位置(MinX和MinY)

然后我调整了_titleLabel帧的大小,这就是全部! textAlignment默认为中心,因此我所要做的就是调整标签框的大小。其他可能的方法是使用

[theTitle CGAffineTransformMakeTranslation(newXValue, 0]; 

Y值为0,因为我不希望它垂直移动。但所描述的方法对我来说更清晰。

所以我添加到创建&提示我的alertView的方法是这样的:

注意:此代码必须在向alertView添加任何其他视图之前进行!

//... alertView creation and display
//create a title object to edit titleLable properties
    UILabel *theTitle = [pickers valueForKey:@"_titleLabel"];
        // set frame for titleLabel to begin where it currently begins in both X and Y, set its width to the width of th e picker +/- the difference in X in case they don't have the same MinX value, and set the height it already has
    theTitle.frame = CGRectMake(CGRectGetMinX(theTitle.frame), CGRectGetMinY(theTitle.frame), CGRectGetWidth(pkPais.frame)+6, CGRectGetHeight(theTitle.frame));

//...add subviews and set its frames (in my case, a pickerView)

对于按钮,我在UIAlertView.h文件中发现按钮无法自定义...所以,如果有人对此问题有任何提示,我们将不胜感激。

希望这有助于其他人!

更新:正如我所提到的,Apple表示alertViews中的按钮无法自定义,因此有两种选择:创建自定义按钮并将其添加为子视图或根本没有按钮。在我的情况下,我这样做了,并在pickerView代码的[myAlertView dismissWithClickedButtonIndex:-1 animated:YES]部分调用了didSelectRow...inComponent。 这对我很有用,但我对新想法很开心!!

见啊!