tangqiaoboy / ios-pro Goto Github PK
View Code? Open in Web Editor NEW《 iOS 开发进阶》随书示例程序和勘误
《 iOS 开发进阶》随书示例程序和勘误
一些长的命令,没有一个地方能复制命令吗?
例如第32页尾开始到33页头的那一坨命令,太长了
第081页,倒数第二行(C++11 提供了基于引用计数的智能指针 share_prt).这里面应该将share_prt
改为share_ptr
p119 #import (StoreKit/StoreKit.h) 括号错了
p120 使用了viewDidUnload
p150 只解释了1到3,4到6是没解释还是排版漏了?
淘宝的镜像改成https://ruby.taobao.org/了
我觉的动态加载libReveal.dylib 是更好的办法,不会修改工程文件.
官方步骤:
1.打开工程,选择 View → Navigators → Show Breakpoint Navigator。
在面板左下角,点击 + 按钮并选择Add Symbolic Breakpoint。
2.Adding Symbolic Breakpoint to Xcode project,在 Symbol 输入区内输入 UIApplicationMain 。
点击 Add Action 按钮, 确认 Action 被设置为 Debugger Command。
3.将以下内容拷贝到 Action 的输入区内:
expr (Class)NSClassFromString(@"IBARevealLoader") == nil ? (void )dlopen("/Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/libReveal.dylib", 0x2) : ((void)0)
Note: 请确认Reveal.app的路径信息符合您Mac的实际位置。
4.选中 Automatically continue after evaluating actions 选项。
5.右击刚才新创建的断点,选择 Move Breakpoint To → User → Moving the Breakpoint to the User
您可以像其他断点一样,禁用或启用此断点。All done!
Note:用户级别断点在所有的Xcode工程中都可以使用。现在在iOS模拟器上构建并运行您的应用。
地址:http://support.revealapp.com/kb/getting-started/revealxcodereveal
第77页,"appledoc -help" 应该是 "appledoc --help"
两道杠
基于CoreText的排版引擎 章节示例程序
真机iPhone6 Plus测试
只需要扫描acess log => access log
您好,page86第一句话中的“与”是不是需要改成“又”。
修改UI控件的字体建议放在kCTFontDescriptorMatchingDidFinish下,否则第一次进入下载完成后字体显示不出来,要等到再次进入才能看到变化
大神您好,最近在拜读您的 《基于 CoreText 的排版引擎:基础》,然后https://raw.githubusercontent.com/tangqiaoboy/iOS-Pro/master/DemoProjects/CoreText.zip 下载的CoreTextDemo里面,我测试的时候发现,通过range修改富文本的颜色无效,但是设置富文本的字体大小有效果!麻烦您能测试看一下吗?
测试步骤如下:
(void)viewDidLoad
{
[super viewDidLoad];
CTFrameParserConfig *config = [[CTFrameParserConfig alloc] init];
config.width = self.ctView.width;
config.textColor = [UIColor blackColor];
NSString *content =
@" 对于上面的例子,我们给 CTFrameParser 增加了一个将 NSString 转 "
" 换为 CoreTextData 的方法。"
" 但这样的实现方式有很多局限性,因为整个内容虽然可以定制字体 "
" 大小,颜色,行高等信息,但是却不能支持定制内容中的某一部分。"
" 例如,如果我们只想让内容的前三个字显示成红色,而其它文字显 "
" 示成黑色,那么就办不到了。"
"\n\n"
" 解决的办法很简单,我们让CTFrameParser
支持接受 "
"NSAttributeString 作为参数,然后在 NSAttributeString 中设置好 "
" 我们想要的信息。";
NSDictionary *attr = [CTFrameParser attributesWithConfig:config];
NSMutableAttributedString *attributedString =
[[NSMutableAttributedString alloc] initWithString:content
attributes:attr];
[attributedString addAttribute:NSForegroundColorAttributeName
value:[UIColor redColor]
range:NSMakeRange(0, 7)];
CoreTextData *data = [CTFrameParser parseAttributedContent:attributedString
config:config];
self.ctView.data = data;
self.ctView.height = data.height;
self.ctView.backgroundColor = [UIColor yellowColor];
}
CoreText Demo对于点击位置有一定偏差(测试上看来是x轴固定有半个字符大小的偏移),
即:在[CoreTextUtils touchContentOffsetInView: atPoint: data:] 中输出idx可以看到
点击某个字的前半部分,输出idx为当前字形的idx,点击这个字的后半部分,输出为下一个字形的idx,
虽然在真机操作的时候手指精度没这么高,但是模拟器可以操作到这个精度,而且这样的偏差可能导致一些意想不到的问题
18.2.8 ,第6行,而master分支增加了一个名为ApeDropDownRightArrow.png的资源文件,此处应为gDifficultyBar.pn ?我看文件里面是这个
让程序在后台长久运行的示例代码如下:
- (void)applicationDidEnterBackground:(UIApplication *)application {
[self beingBackgroundUpdateTask];
//在这里加上你需要长久运行的代码
[self endBackgroundUpdateTask];
}
- (void)beingBackgroundUpdateTask {
self.backgroundUpdateTask = [[UIApplication shareApplication] beginBackgroundTaskWithExpirationHandler:^{
[self endBackgroundUpdateTask];
}];
}
- (void)endBackgroundUpdateTask {
[[UIApplication sharedApplication] endBackgroundTask:self.backgroundUpdateTask];
self.backgroundUpdateTask = UIBackgroundTaskInvalid;
}
1.作者第一个方法是不是想写成beginBackgroundUpdateTask以与end对应啊?
2.在beingBackgroundUpdateTask的expirationHandler中有调用endBackgroundUpdateTask,而在applicationDidEnterBackground中也有调用,这样重复调用不会有问题么?
Hi Tang,
拜读了您的书,书上有很多脚本代码,不知是否可以也放到github上?
巧兄,按照书中方式关联到reveal,并不能在reveal中看到想要调试的iOS程序界面... 是连接方式有变化吗?
在github上下载UIWindow.zip解压后打开,运行程序在6splus的模拟器上,直接崩溃
在PasswordInputWindow.m
中的initWithFrame:
中添加一行代码:
self.rootViewController = [UIViewController new]
为什么这样就会不崩溃了,原理是什么,求作者解答.
P125 倒数第 3 行,“它比 MGTemplateEngine、CGMustache 的功能更简单。”,与上一句有歧义。
136页有错误,第一行末尾,一嗨租车虽然已经修改了登录协议,此处根据上下文应该是神州租车
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.