Мое приложение настроено так.Как изменить шрифт в NSTextContainer
Пользовательский UIView внутри ScrollView.
Пользовательский UIView получает текст, сгенерированный поверх него этим кодом.
CoreDavening.mничьей функции
attStorage = [[NSTextStorage alloc]initWithAttributedString:string];
textContainer = [[NSTextContainer alloc]
initWithSize:CGSizeMake(self.frame.size.width, FLT_MAX)];
layoutManager = [[NSLayoutManager alloc]init];
[layoutManager addTextContainer:textContainer];
[attStorage addLayoutManager:layoutManager];
NSRange glyphRange = [layoutManager
glyphRangeForTextContainer:textContainer];
[layoutManager drawGlyphsForGlyphRange: glyphRange atPoint: rect.origin];
В моей ViewController.m Я создаю представление, как это.
CoreDavening *davenView = [[CoreDavening alloc]initWithFrame:CGRectMake(0, 0,self.view.frame.size.width, [coreDavening heightForStringDrawing])];
davenView.backgroundColor = [UIColor whiteColor];
davenView.layer.borderColor = [[UIColor whiteColor]CGColor];
scrollView.backgroundColor = [UIColor whiteColor];
[scrollView addSubview:davenView];
self.scrollView.contentSize = davenView.frame.size;
Im пытаясь найти способ 1) изменить размер шрифта (только размер) 2) имеют Scrollview и CustomView размер соответственно.
Как это можно сделать?
EDIT 1: Я создаю пользовательский вид в своем представленииКонтроллер, как это.
CoreDavening *coreDavening = [[CoreDavening alloc]init];
davenView = [[CoreDavening alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, [coreDavening heightForStringDrawing ])];
и обновление/обновление пользовательского вида следующим образом.
Он срабатывает, когда установленный слайдер меняет значение.
- (IBAction)sliderChanged:(id)sender {
NSUserDefaults *prefs= [NSUserDefaults standardUserDefaults];
[prefs setInteger:(long)self.Slider.value forKey:@"fontSize"];
[prefs synchronize];
[davenView setNeedsLayout];
}
У моего настраиваемого контроллера есть шрифт, подобный.
ЭТО в жеребьевке ФУНКЦИИ
attStorage = [[NSTextStorage alloc]initWithAttributedString:string];
[attStorage addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:(long)[prefs integerForKey:@"fontSize"]] range:NSMakeRange(0, attStorage.length)];
textContainer = [[NSTextContainer alloc]
initWithSize:CGSizeMake(self.frame.size.width, FLT_MAX)];
layoutManager = [[NSLayoutManager alloc]init];
[layoutManager addTextContainer:textContainer];
[attStorage addLayoutManager:layoutManager];
NSRange glyphRange = [layoutManager
glyphRangeForTextContainer:textContainer];
[layoutManager drawGlyphsForGlyphRange: glyphRange atPoint: rect.origin];
Будет ли это обновлять текст сразу? Или мне нужно вызвать setNeedsLayout или что-то – user2738258
Вам нужно нарисовать его снова, используя setNeedsLayout. – Sandeep
Не обновляется. Ill опубликуйте код для создания представления и обновления – user2738258