2016-03-27 27 views
1

UIImage'ın üstüne bir metin etiketi ekliyorum. Metin etiketini başarıyla ekleyebildim, ancak dikey olarak 90 derece döndürmek istiyorum.UITextView döndürmeyecek

UIGraphicsBeginImageContext(image.size); 
[image drawInRect:CGRectMake(0,0,image.size.width,image.size.height)]; 

UITextView *myText = [[UITextView alloc] init]; 
myText.font = [UIFont fontWithName:@"font-name" size:300.0f]; 
myText.textColor = [UIColor whiteColor]; 
myText.text = @"Text"; 
myText.backgroundColor = [UIColor clearColor]; 
[myText setTransform:CGAffineTransformMakeRotation(-90* M_PI/180)]; 

CGSize maximumLabelSize = CGSizeMake(image.size.width,image.size.height); 
CGSize expectedLabelSize = [myText.text sizeWithFont:myText.font 
            constrainedToSize:maximumLabelSize 
             lineBreakMode:UILineBreakModeWordWrap]; 


myText.frame = CGRectMake(image.size.width - expectedLabelSize.width, image.size.height - expectedLabelSize.height, image.size.width, image.size.height); 

[[UIColor whiteColor] set]; 
[myText.text drawInRect:myText.frame withFont:myText.font]; 
UIImage *myNewImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

Bunu kullanarak Metin Görünümü dönüşüm çalıştı:

[myText setTransform:CGAffineTransformMakeRotation(-90* M_PI/180)]; 

yanı sıra:

[myText setTransform:CGAffineTransformMakeRotation(-M_PI/2)]; 

Ama işe yaramıyor

Bu

sahip olduklarım kodudur hiç bir şey olmaz. Herhangi bir yardım için minnettarım!

+0

"UITextView" yerine bir "UILabel" kullanabilir misiniz? –

+0

@ 3308310 'UILabel' olarak değiştirmeyi denedim ama hiçbir etkisi olmadı. –

cevap

2

Metni [myText.text drawInRect:myText.frame withFont:myText.font]; kullanarak çiziyorsunuz, ancak metni aldığınız görünümü döndürüyorsunuz. Bu şekilde bir dize çizmek istiyorsanız, bağlamı döndürmeniz ve sonra çizmeniz gerekir. Örneğin:

CGContextRef context = UIGraphicsGetCurrentContext(); 
CGContextSaveGState(context); 
CGContextRotateCTM(context,-M_PI/2); 
[myText.text drawInRect:myText.frame withFont:myText.font]; 
CGContextRestoreGState(context); 

Bu, esasen tuvali döndürecek, dizeyi çizecek ve ardından tuvali geri döndürecektir.

Görünümü yalnızca saydam bir arka planla döndürmek daha kolay olabilir.

+0

Görüyorum! Ancak, bu şekilde döndürüldükten sonra, metin göründüğü gibi görüntünün dışına gider gibi görünür. Yeni bir CGRectMake oluşturmam gerekiyor mu? –

+0

Geometriyi kendiniz halletmeniz gerekecek, ancak en azından, görüntü için genişlik ve yükseklik çevirmek isteyeceğinizi (örn. "CGRectMake (image.size.height - expectedLabelSize.width, image). size.width - expectedLabelSize.height, image.size.height, image.size.width); ') Bu, herhangi bir görsel temsil olmadan hata ayıklaması çok zor olsa da. – beyowulf