在两个线程上同时使用任何UIStringDrawing方法都会导致崩溃.我的理解是所有UIStringDrawing方法都是iOS 4.0中的线程安全的.
这段代码(没有任何用处)演示了这个问题:
dispatch_queue_t queue = dispatch_queue_create("com.queue", NULL);
for (int i = 0; i < 10000; i++) {
dispatch_async(queue, ^{
NSString *string = @"My string";
CGSize size = [string sizeWithFont:[UIFont boldSystemFontOfSize:13]];
});
}
for (int i = 0; i < 10000; i++) {
NSString *string = @"My string";
CGSize size = [string sizeWithFont:[UIFont boldSystemFontOfSize:13]];
}
dispatch_release(queue);
Run Code Online (Sandbox Code Playgroud)
应用程序在循环几次迭代后崩溃,并带有以下回溯:
* thread #1: tid = 0x2403, 0x00ad40c8, stop reason = EXC_BAD_ACCESS (code=2, address=0xad40c8)
frame #0: 0x00ad40c8
frame #1: 0x36bc4252 WebCore`WebCore::Font::Font(WebCore::FontPlatformData const&, WTF::PassRefPtr<WebCore::FontSelector>) + …Run Code Online (Sandbox Code Playgroud) 我正在尝试根据当前宽度自动调整文本字段/视图的大小.换句话说,我希望宽度保持不变,但根据提供给它的文本调整高度.
这似乎是有效的,但出于某种原因,尽管努力将其手动移回,但仍与我的窗口底部对齐.谁能看到我在这里做错了什么?

NSString *temp = @"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer vel felis nec massa ultricies blandit non id arcu. Sed enim est, facilisis a feugiat in, consectetur eget arcu. Aenean rutrum, lacus id euismod congue, nisl erat vulputate lectus, non faucibus tortor purus sed sem. Donec tempor dui egestas velit auctor vitae faucibus diam facilisis. Morbi convallis nulla quis est pulvinar quis ultricies sem sollicitudin.";
myText.stringValue = temp;
NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:
[NSFont systemFontOfSize:12], NSFontAttributeName, …Run Code Online (Sandbox Code Playgroud) 我有一个UITextView内部的UIScrollView工作完美无缺的iOS 6建造xcode 4.x,但现在建设与xcode 5它无法正常工作,甚至在iOS 6.
问题是,即使屏幕宽度的文本换行UITextView,并UIScrollView有较大的宽度.我使用此代码来计算出新的宽度和高度UITextView,即使textview向左/向右滚动,文本也会被包裹,好像宽度只是屏幕的宽度.
谢谢
self.responceTextView.text = [NSString stringWithFormat:@"%@%@",_responceTextView.text,responce];
[self textViewDidChange:self.responceTextView];
- (void)textViewDidChange:(UITextView *)textView
{
// Recalculate size of text field
CGSize maxSize = CGSizeMake(MAXFLOAT, MAXFLOAT);
CGSize reqSize = [textView.text sizeWithFont:[UIFont fontWithName:@"Courier" size:12] constrainedToSize:maxSize lineBreakMode:NSLineBreakByClipping];
self.responceTextView.frame = CGRectMake(0, 0, reqSize.width+16, reqSize.height+16);
// Resize scroll view if needs to be smaller so text stays at top of screen
CGFloat maxScrollHeight = …Run Code Online (Sandbox Code Playgroud) 调整UITextView的大小以适应其内容的高度可以像这样实现:
CGRect frame = _textView.frame;
frame.size.height = _textView.contentSize.height;
_textView.frame = frame;
Run Code Online (Sandbox Code Playgroud)
有没有类似于适合宽度的东西,没有包装内容文本?
一些背景:我想要一个3个按钮UIToolBar.我设法让中间的一个居中,把所有东西都放进UIToolBar去UIView.
除了中间按钮的标题太大之外,Everythings看起来就像它应该是它.然后它会显示在左或右按钮下.
当它们太大时,我无法获得UIToolBar或者UIBarButtonItems宽度能够调整它们的大小.'UIBarButtonItem'有一个非常好的width属性,如果它太大,我可以调整控件的大小.但我不知道它什么时候太大了!
编辑:我最终做了很多努力.我计算文本的大小,并将其与我在设备上看到的最大像素大小进行比较.丑陋但有效.
+ (CGFloat)calculateTextWidth:(NSString *)text
{
CGSize fullSize = [UIScreen mainScreen].applicationFrame.size;
UIGraphicsBeginImageContext(fullSize);
CGContextRef context = UIGraphicsGetCurrentContext();
// calculate the text size
CGContextSelectFont(context, "Helvetica", 17, kCGEncodingMacRoman);
CGContextSetTextMatrix(context, CGAffineTransformMakeScale(1.0, -1.0));
CGContextSetTextDrawingMode(context, kCGTextInvisible);
// measure the text
CGPoint initialTextPosition = CGContextGetTextPosition(context);
CGContextShowTextAtPoint(context, 0, 0, [text cStringUsingEncoding:NSASCIIStringEncoding], text.length);
CGPoint finalTextPosition = CGContextGetTextPosition(context);
return finalTextPosition.x - initialTextPosition.x;
}
Run Code Online (Sandbox Code Playgroud) 我使用下面的代码从字符串长度计算标签的高度.我使用xcode 5.0,它在iOS 6模拟器中工作正常,但它在iOS 7中运行不佳.
NSString* str = [[array objectAtIndex:i]valueForKey:@"comment"];
CGSize size = [className sizeWithFont:[UIFont systemFontOfSize:15]
constrainedToSize:CGSizeMake(300, MAXFLOAT) lineBreakMode:UILineBreakModeWordWrap];
Height_1 = size.height;
Run Code Online (Sandbox Code Playgroud)
如果iOS 7有任何解决方案,那么请帮忙.提前致谢
我正在阅读旧的 obj-c 教程并且很难理解 obj-c 代码。而且它们显然已被弃用。我已经研究了其他 stackoverflow 问题,但我仍然无法弄清楚,因为它们都不是在 Swift 中的。
CGSize textSize = [text sizeWithFont:textFont constrainedToSize:CGSizeMake(printableFrame.size.width, CGFLOAT_MAX) lineBreakMode:UILineBreakModeWordWrap];
CGRect textFrame = CGRectMake(printableFrame.origin.x, currentY, textSize.width, textSize.height);
Run Code Online (Sandbox Code Playgroud)
如何将上面的代码转换为 Swift?
我正在使用此函数来更改UIButton中标签的字体大小.像这样(SWIFT): -
Button!.titleLabel?.font = Button!.titleLabel?.font.fontWithSize(12)
Run Code Online (Sandbox Code Playgroud)
我想看看ios 7的这个功能的可用性.所以我看到了Xcode的快速帮助文档.它被提到了iOS (8.0 and later)
然后我继续在苹果网站上搜索适当的功能,但是它可以从Available in iOS 2.0 and later.See Here获取它的参考资料.
请让我知道哪一个值得信任.
我看到答案,但我不满意,因为我检查了另一堂课喜欢NSMutableAttributedString迅捷
我有一个UILabel带有可变文本的984x728像素的测量值.如何计算最适合的字体大小UILabel?
我的代码是
CGSize textSize = [text sizeWithFont:font constrainedToSize:CGSizeMake(self.bounds.size.width - 106, CGFLOAT_MAX) lineBreakMode:NSLineBreakByWordWrapping];
Run Code Online (Sandbox Code Playgroud)
任何人都知道如何解决此警告?
objective-c ×8
ios ×6
iphone ×4
uitextview ×2
cgsize ×1
cocoa-touch ×1
ios6 ×1
ios7 ×1
ipad ×1
nsstring ×1
nstextfield ×1
nstextview ×1
swift ×1
uifont ×1
uikit ×1
uilabel ×1
xcode ×1