Я применил фоновое изображение к своему ViewController:
ParentViewController.View.BackgroundColor = UIColor.FromPatternImage (image)
Теперь, когда ориентация экрана изменяется, он разрушает весь фоновый рисунок, потому что это изображение остается прежним.Конечно, я мог просто повернуть изображение в Photoshop и поместить его в свой проект, но моя скромная гордость инженера-программиста возмутилась.
Я искал во многих источниках.Я пробовал образцы с объективом.Я нахожу только несколько в c #.У меня нет времени изучать различия между UIKit и Core Graphics.Я пробовал CGContext.RotateCTM
, я пытался добиться этого с CGAffineTransform.MakeRotation
.Не работаетМне просто нужно сделать простую вещь.
Очевидно, что перед использованием RotateCTM
или изменением CGAffineTransform
вы должны как-то определить опорную точку.
Пожалуйста, кто-нибудь покажет мне простой пример,как это работает.
Upd:
Это то, что я получил до сих пор:
var image = new UIImage ("Images/background.jpg");
if (interfaceOrientation == UIInterfaceOrientation.LandscapeLeft) {
CGImage imageRef = image.CGImage;
var width = imageRef.Width;
var height = imageRef.Height;
CGImageAlphaInfo alphaInfo = imageRef.AlphaInfo;
CGColorSpace colorSpaceInfo = CGColorSpace.CreateDeviceRGB ();
CGBitmapContext bitmap =
new CGBitmapContext (IntPtr.Zero, width, height, imageRef.BitsPerComponent, imageRef.BytesPerRow, colorSpaceInfo, alphaInfo);
bitmap.TranslateCTM(0, imageRef.Height);
bitmap.RotateCTM((float)-1.5707f);
bitmap.DrawImage (new Rectangle (0, 0, height, width), imageRef);
image = UIImage.FromImage (bitmap.ToImage());
bitmap = null;
}
ParentViewController.View.BackgroundColor = UIColor.FromPatternImage (image);
и, как вы можете видеть, это не очень хорошо, хотя и делаетповернуть:
Чего мне не хватает?