2013-05-10 5 views
0

Я динамически добавлять значок ошибки в поля в форме, как показано здесь:UIViewAutoresizingFlexibleLeftMargin со ссылкой на SuperView на прошивке

error icon

Я генерируя значок в коде, и я хочу, чтобы поместить это на верхнем правом его супервизора, но я не могу заставить его идти туда, где я этого хочу. Снимок экрана показывает, как он остается слева, но он должен быть справа.

Вот не мой код:

//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; 

Независимо от того, что я установил й значение фрейма, я не могу заставить его придерживаться справа.

Что я делаю неправильно с frame и/или autoResizingMask?

+0

Это будет * много * легче сделать, если вы находитесь на iOS 6 и использовать autolayout вместо 'autoresizingMask'. 'autoresizingMask' ничего не позиционирует! Вы должны правильно установить позицию. Но autolayout позиционирует вещь точно по отношению к другим вещам и сохраняет ее там. – matt

ответ

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 заменить ссылкой на мнение, который будет SuperView)

+0

Работал как шарм, спасибо! –

+0

Не обаяние; просто знание того, что такое рамка и границы. Если вы хотите узнать о кадре и границах, прочитайте мою книгу: http://www.apeth.com/iOSBook/ch14.html#_frame – matt

1

Авторезистирующие правила применяются только при изменении размера представления или супервизора, это не для установки начального положения. Плюс, значок вашей ошибки (-10, -10) находится за пределами верхнего левого угла. То, что вы, вероятно, нужно просто:

UIImageView *errorIcon = [[UIImageView alloc] initWithImage:errorImage]; 
errorIcon.center = CGPointMake(yourFieldView.frame.size.width, 0); 
[yourFieldView addSubview:errorIcon]; 
+0

Ваш ответ почти такой же, как и другой. Спасибо за вашу помощь! –

+0

Да, только быстрее :) –

Смежные вопросы