控制在iPhone 4上看起来不错,但在iPhone 3GS上看起来很糟糕,为什么?

时间:2011-08-01 07:38:01

标签: uiview ios4 uibutton uiwindow

在我的应用程序中,我有一个视图弹出当前视图以帮助用户(如果需要)。 问题是:在iPhone 4上,该视图的关闭按钮看起来不错,而在iPhone 3GS上它有一个小突起。我不知道为什么。复选框也会发生同样的事情。

以下是Picasa相册中的图片(有2张图片,一张名为iPhone 3GS,另一张是iPhone 4,请看关闭按钮上方的凹凸和iPhone 3GS图片中的复选框。)

https://picasaweb.google.com/103964563927969565521/StackoverflowPosts?authkey=Gv1sRgCKWHu6mKj4OS5AE

这是用于创建关闭按钮的代码:

// Close button
    closeButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];

    float xCor = self.frame.size.width - kViewMargins - kCloseButtonWidth;
    float yCor = y + ((self.frame.size.height - y) / 2 - kCloseButtonHeight / 2);

    closeButton.frame = CGRectMake(xCor,
                                   yCor,
                                   kCloseButtonWidth,
                                   kCloseButtonHeight);  

    [closeButton setTitle:kClose forState:UIControlStateNormal];
    [closeButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
    [[closeButton titleLabel] setFont:[UIFont boldSystemFontOfSize:kQuickTipTitleFontSize]];
    [closeButton setBackgroundImage:[UIImage imageNamed:@"close_button.png"] forState:UIControlStateNormal]; 
    [closeButton addTarget:self action: @selector (doneButtonClick)  forControlEvents: UIControlEventTouchUpInside]; 
    [self addSubview:closeButton];

我不知道该怎么办,请帮忙。

谢谢, 沙乌尔。

3 个答案:

答案 0 :(得分:0)

我猜是因为我看不到你的close_button.png文件,但我认为问题是你的close_button.png和你正在创建的按钮大小不同,你看到的凹凸是默认的绘图圆形矩形按钮。

答案 1 :(得分:0)

嗯,看起来有点像RoundRect默认绘图正如Jon所说的那样从你的图形后面流出。我建议您将按钮类型更改为 UIButtonTypeCustom ,而不是弄乱图形:

closeButton = [UIButton buttonWithType:UIButtonTypeCustom];

这将在您设置的图形和文本之外创建一个NO ui元素的按钮。

答案 2 :(得分:0)

closeButton = [UIButton buttonWithType:UIButtonTypeCustom];
UIImage* closeImage = [UIImage imageNamed:@"close_button.png"];
float xCor = self.frame.size.width - kViewMargins - kCloseButtonWidth;
float yCor = y + ((self.frame.size.height - y) / 2 - kCloseButtonHeight / 2);

closeButton.frame = CGRectMake(xCor,
                               yCor,
                               closeImage.size.width/2,
                               closeImage.Size.height/2);  

[closeButton setTitle:kClose forState:UIControlStateNormal];
[closeButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[[closeButton titleLabel] setFont:[UIFont boldSystemFontOfSize:kQuickTipTitleFontSize]];
[closeButton setBackgroundImage:closeImage  forState:UIControlStateNormal]; 
[closeButton addTarget:self action: @selector (doneButtonClick)  forControlEvents: UIControlEventTouchUpInside]; 
[self addSubview:closeButton];
[closeButton release]; /// you must release the closeButton