Before iOS 17, CTFrameGetLines(ctFrame) returns exact number of lines it will displayed on the screen. However after iOS 17.2.x, under some unknown condition, it returns less CTLines. It's easy to reproduce:
let formattedString = NSMutableAttributedString()
formattedString.append(.init(string: "你", attributes: [.font: UIFont.boldSystemFont(ofSize: 14)]))
formattedString.append(.init(string: "\n\n\n\n\n\n好\n"))
let ctSetter = CTFramesetterCreateWithAttributedString(formattedString as CFAttributedString)
let rect = CGRect(x: 0, y: 0, width: 100, height: 1000)
let bezierPath = UIBezierPath(rect: rect)
let ctFrame = CTFramesetterCreateFrame(ctSetter, CFRangeMake(0, formattedString.length), bezierPath.cgPath, nil)
let ctLines = CTFrameGetLines(ctFrame)
print("CTLine count: \(CFArrayGetCount(ctLines))")
The test code above should print CTLine count: 7, but actually it returns 4. One weird CTLine is like:
- 1 : <CTLine: 0x3031e0780>{run count = 1, string range = (2, 3), width = 0, A/D/L = 9.24023/2.75977/0, glyph count = 3, runs = (
<CTRun: 0x10173ec50>{string range = (2, 3), string = "\n\n\n", attributes = {
NSFont = "<UICTFont: 0x101728800> font-family: \"Helvetica\"; font-weight: normal; font-style: normal; font-size: 12.00pt";
}}
)
}
never met this issue before, is it a bug or just new feature...
Post
Replies
Boosts
Views
Activity
I installed Xcode 15 and on first openning it auto downloaded iOS 17 simulator but failed to install. The error info is :
Failed to copy file /Users/kelanjiang/Library/Caches/com.apple.dt.Xcode/Downloads/com.apple.dmg.iPhoneSimulatorSDK17_0-17.0.0.0.dmg to /Library/Developer/CoreSimulator/Images/Inbox/43457D23-59DB-496A-B682-85D8F92F4FC7.dmg.copying
Domain: SimDiskImageErrorDomain
Code: 6
User Info: {
DVTErrorCreationDateKey = "2023-09-25 10:26:12 +0000";
unusableErrorDetail = "Error Domain=NSPOSIXErrorDomain Code=2 \"No such file or directory\" UserInfo={NSLocalizedDescription=Failed to copy file /Users/kelanjiang/Library/Caches/com.apple.dt.Xcode/Downloads/com.apple.dmg.iPhoneSimulatorSDK17_0-17.0.0.0.dmg to /Library/Developer/CoreSimulator/Images/Inbox/43457D23-59DB-496A-B682-85D8F92F4FC7.dmg.copying}";
}
--
System Information
macOS Version 13.6 (Build 22G120)
Xcode 15.0 (22265) (Build 15A240d)
Timestamp: 2023-09-25T18:26:12+08:00
The sreenshot is like:
I tried to reinstall Xcode and clean some cache files but still have the same issue and same appearence in this setting page.
Any advises would be helpful
As title said, I'm using Xcode 12.1, Mbp 15' 2017. My project is a large one that have over 300 images or icons and it will take aboud 45s to compile the assets. I just rebuild it after a success building and it will recompile assets.
What should I do to avoid this problem?