Я хочу отображать предупреждающий пузырь, когда пользователь вводит недействительный адрес электронной почты. Я могу успешно показать пузырь, но в то время как пузырь присутствует, если ориентация изменяется пузырь перекрывается с UITextFieldUitextfield и UIImageView перекрываются при изменении ориентации.
Смотреть начало как пейзаж:
ориентация становится Портрет:
Другой путь вокруг:
Просмотреть начато как портрет:
ориентация становится Landscape (пузырь идет дальше)
Мой код:
//image for warnings
//get screen size
CGRect screenRect = [[UIScreen mainScreen] bounds];
float bubleOriginx;
//detect device orientation
UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
if(orientation == UIInterfaceOrientationLandscapeLeft || orientation== UIInterfaceOrientationLandscapeRight)
{
bubleOriginx=screenRect.size.width*0.95;
}else
{
bubleOriginx=screenRect.size.width*0.72;
}
UIImage *bubble = [[UIImage imageNamed:@"create event button.png"]
resizableImageWithCapInsets:UIEdgeInsetsMake(15, 21, 15, 21)];
self.emailImage = [[UIImageView alloc] initWithImage:bubble];
self.emailImage.frame = CGRectMake(bubleOriginx, self.email.frame.origin.y+28, 0, 0);
UILabel *xlabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 0, 0)];
xlabel.font = [UIFont fontWithName:@"Helvetica" size:15.0];
xlabel.text = string;
xlabel.numberOfLines = 0;
CGSize labelSize = [xlabel.text sizeWithFont:xlabel.font
constrainedToSize:xlabel.frame.size
lineBreakMode:xlabel.lineBreakMode];
xlabel.frame = CGRectMake(
xlabel.frame.origin.x, xlabel.frame.origin.y,
xlabel.frame.size.width, labelSize.height);
[xlabel setBackgroundColor:[UIColor clearColor]];
[self.emailImage addSubview:xlabel];
self.emailImage.autoresizingMask = UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleLeftMargin;
[self.view addSubview:self.emailImage];
[UIView animateWithDuration:0.85
animations:^(void) {
self.emailImage.frame = CGRectMake(bubleOriginx, self.email.frame.origin.y+28, 220, -60);
xlabel.frame = CGRectMake(10, 0, 210, 60);
} completion:^(BOOL finished) {
}];
Как я могу стабильным, что UIImageview
так это обыкновение пересекаться? Допустим, он всегда останется на расстоянии +30 пунктов от конечной точки uitextfield
или, по крайней мере, не будет перекрываться.
Спасибо, Mord
Вы используете iOS 6? В этом случае вы можете использовать ограничения автоматической компоновки вместо автоматических масок, которые намного мощнее и допускают такие ограничения. –
Нет, это 5.1. Приложение должно быть совместимо с IOS 5.1 и выше. –