首页 > 代码库 > 斯坦福大学-IOS7应用开发总结
斯坦福大学-IOS7应用开发总结
Lecture 4
1. 如果某个文本内容的字体需要根据用户的设置来调整大小的话,我们可以选用如下方法来设置该文本的字体:
[UIFont preferredFontForTextStyle:UIFontTextStyleBody];//而不是如下固定的使用系统字体[UIFont systemFontOfSize:12];
2. 使用UIFontDescriptor类来为现有字体添加额外的属性:
UIFont *bodyFont = [UIFont preferredFontForTextStyle:UIFontTextStyleBody];UIFontDescriptor *existingDescriptor = [bodyFont fontDescriptor];UIFontDescriptorSymbolicTraits traits = existingDescriptor.symbolicTraits;traits |= UIFontDescriptorTraitBold;UIFontDescriptor *newDescriptor = [existingDescriptor fontDescriptorWithSymbolicTraits:traits];UIFont *boldBodyFont = [UIFont fontWithDescriptor:newDescriptor size:0];//0为任意大小
3. 通过NSMutableAttributedString类给文本添加样式:
UIColor *yellow = [UIColor yellowColor];UIColor *transparentYellow = [yellow colorWithAlphaComponent:0.3]; @{ NSFontAttributeName : [UIFont preferredFontWithTextStyle:UIFontTextStyleHeadline] NSForegroundColorAttributeName : [UIColor greenColor], NSStrokeWidthAttributeName : @-5, NSStrokeColorAttributeName : [UIColor redColor], NSUnderlineStyleAttributeName : @(NSUnderlineStyleNone), NSBackgroundColorAttributeName : transparentYellow }// UIButton’s - (void)setAttributedTitle:(NSAttributedString *)title forState:...; // UILabel’s @property (nonatomic, strong) NSAttributedString *attributedText; // UITextView’s @property (nonatomic, readonly) NSTextStorage *textStorage;
Lecture 5
1.View Controller lifeCycle
//在控制器初始化完成并且outlet被设置后调用
- (void)viewDidLoad{[super viewDidLoad]; // always let super have a chance in lifecycle methods// do some setup of my MVC}
//此方法需要注意的是在来到这个方法时,视图的大小还没有确定,即view的frame还是未知的,因此不要在此方法里面做一些初始化size的操作。
// 在视图即将显示在屏幕上时调用- (void)viewWillAppear:(BOOL)animated;// 注意:此方法随着视图的显示与隐藏会调用多次,而视图只loaded一次,因为不要在这里面做太多事情,如果是会经常变化的操作,可以在此方法中。
// 在视图即将消失时调用- (void)viewWillDisappear:(BOOL)animated{[super viewWillDisappear:animated];}// 一般在此方法中做一些代码清理工作,释放内存
// 在view的frame被改变或其subviews改变的任务时候都会被调用- (void)view{Will,Did}LayoutSubviews;// 一般设置视图或子视图的frame操作都在此方法中进行
// 当使用storyboard创建视图控制器时,在outlet被设置之前会调用此方法- (void)awakeFromNib{}// 注意的是,如果视图控制器是在storyboard创建,将不会再调用默认的初始化方法,所以一些初始化的操作应该放在此方法中来执行。
Lecture 8
1. Dynamic Animation
创建动态动画:重力、碰撞。步骤:
a. 创建一个UIDynamicAnimator对象
b. 添加一个行为对象UIDynamicBehaviors(一般是其子类:重力gravity、碰撞collisions、吸附attachment等)
c. 添加一个UIDynamicItems(一般是UIViews)到上面的行为对象中
如:
UIDynamicAnimator *animator = [[UIDynamicAnimator alloc] initWithReferenceView:aView];UIGravityBehavior *gravity = [[UIGravityBehavior alloc] init]; [animator addBehavior:gravity];UICollisionBehavior *collider = [[UICollisionBehavior alloc] init]; [animator addBehavior:collider];id <UIDynamicItem> item1 = ...; id <UIDynamicItem> item2 = ...; [gravity addItem:item1]; [collider addItem:item1];[gravity addItem:item2];
任务对象都可以作为UIDynamicItem,前提是需要实现<UIDynamicItem>协议。UIView默认实现了此协议。
其中,我们也可以创建自定义的UIDynamicBehavior对象(它是所有行为的父类),在初始化方法中添加想要添加的行为(可以多个),这样就能实现将多个子行为动画的封装。通过下面的方法可以添加子行为:
- (void)addChildBehavior:(UIDynamicBehavior *)behavior;
当行为被执行时,会调用一个名为actoin的block方法。默认是没有实现的,如果我们要在此过程做些什么的话,可以实现该block。
@property (copy) void (^action)(void);
斯坦福大学-IOS7应用开发总结
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。