У меня есть обычай UIView
, который я хочу придерживаться в верхней части UIWindow
, даже если меняется ориентация интерфейса. Вот мое мнение в портретной ориентацииКак вставить UIView в начало UIWindow на iOS 7
Проблема заключается в том, что до IOS 8 UIWindow
системы координат не изменяется с изменением ориентации. Поэтому мне нужно сделать все вычисления вручную. Первая вещь, чтобы изменить преобразование UIView
, что я с помощью этого метода
-(CGFloat)angleForOrientation:(UIInterfaceOrientation)orientation
{
CGFloat angle;
switch (orientation) {
case UIInterfaceOrientationLandscapeLeft:
angle = -M_PI /2.0;
NSLog(@"UIInterfaceOrientationLandscapeLeft");
break;
case UIInterfaceOrientationLandscapeRight:
angle = M_PI /2.0;
NSLog(@"UIInterfaceOrientationLandscapeRight");
break;
case UIInterfaceOrientationPortraitUpsideDown:
angle = M_PI;
NSLog(@"UIInterfaceOrientationPortraitUpsideDown");
break;
default:
angle = 0;
NSLog(@"UIInterfaceOrientationPortrait");
break;
}
return angle;
}
Вторая вещь, которая каким-то образом сопоставить фактические системы координат в UIWindow систему, которая остается той же координаты. Итак, как мне рассчитать фрейм пользовательского UIView
, что даже когда пользователь поворачивает представление на другие ориентации, у меня будет такой же размер UIView, который прикреплен к верхней центральной части экрана? Например, это как следует вид выглядеть в ландшафте
Кстати это изображение генерируется из IOS 8 версии. Для чего я делаю следующее:
self.frame = CGRectMake(window.bounds.size/2-50, 0, 100, 100);
CGFloat angle = [self angleForOrientation:orientation];
self.transform = CGAffineTransformMakeRotation(angle);
Мне нужно сделать что-то похожее на iOS 7. Как я могу это достичь?
Спасибо за помощь!
Взгляните на этот проект и на его код https://github.com/hfossli/AGWindowView – Andrea
Благодаря Андреа. Это было первое, что я пробовал, но это не решило мое дело. Может быть, мне нужно внести некоторые изменения в исходный код. – kyurkchyan