0

我正在向表单中的字段动态添加错误图标,如下所示:

错误图标

我在代码中生成图标,我想把它放在它的超级视图的右上角,但我不能让它去我想要的地方。屏幕截图显示了它如何保持在左侧,但它应该在右侧。

这是我的代码:

//Create the image
UIImageView *errorIcon =[[UIImageView alloc] initWithFrame:CGRectMake(-10,-10,23,23)];

//Set the image file
errorIcon.image = [UIImage imageNamed:@"error.png"];

//Tell the image to position it on the top-right (flexible left margin, flexible bottom margin)
errorIcon.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleBottomMargin;

无论我将框架的 x 值设置为什么,我都无法让它保持在右侧。

我对frame和/或做错了autoResizingMask什么?

4

2 回答 2

1

自动调整大小规则仅在您调整视图或超级视图大小时生效,而不是用于设置初始位置。另外,您的错误图标原点(-10, -10)就在左上角之外。您可能需要的只是:

UIImageView *errorIcon = [[UIImageView alloc] initWithImage:errorImage];
errorIcon.center = CGPointMake(yourFieldView.frame.size.width, 0);
[yourFieldView addSubview:errorIcon];
于 2013-05-10T04:58:17.577 回答
1

你的问题是这一行:

UIImageView *errorIcon = 
    [[UIImageView alloc] initWithFrame:CGRectMake(-10,-10,23,23)];

这意味着超级视图的左上角。如果那不是你想放的地方,就不要放在那里!

右上角在这里:

UIImageView *errorIcon = 
    [[UIImageView alloc] initWithFrame:
        CGRectMake(superview.bounds.size.width-10,-10,23,23)];

(用于superview替换对将成为超级视图的视图的引用。)

于 2013-05-10T05:01:11.597 回答