首页 > 代码库 > 斯坦福大学-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应用开发总结