ViewController 应用

 
再第一个XIB页面创建另一个XIB页面,并且通过按钮调用它
 
 
- (IBAction)GoSecond:(id)sender {
    secondViewController *secVC = [[secondViewController alloc] initWithNibName:@"secondViewController" bundle:nil];
    secVC.modalTransitionStyle = UIModalPresentationPageSheet;
    [self presentViewController:secVC animated:YES completion:^{
        NSLog(@"success ");
    }];
}
 
在第二个XIB页面创建一个按钮,按钮PRESS返回第一个页面
 
 
- (IBAction)Backfirst:(id)sender {
    [self dismissViewControllerAnimated:YES completion:^{
        NSLog(@"dismiss");
    }];
}
 
 
创造生命周期函数:
 
-(void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];
    NSLog(@"view will appear");
}
-(void)viewDidAppear:(BOOL)animated{
    [super viewDidAppear:animated];
    NSLog(@"view did appear");
}
-(void)viewWillDisappear:(BOOL)animated{
    [super viewWillDisappear:animated];
    NSLog(@"view will disappear");
}
-(void)viewDidDisappear:(BOOL)animated{
    [super viewDidDisappear:animated];
    NSLog(@"view did disappear");
}
 
 
页面切换方法:
 
       secVC.modalTransitionStyle = UIModalPresentationPageSheet;
    UIModalPresentationFullScreen = 0,
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_3_2
    UIModalPresentationPageSheet,
    UIModalPresentationFormSheet,
    UIModalPresentationCurrentContext,
#endif
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_7_0
    UIModalPresentationCustom,
    UIModalPresentationNone = -1,   
 
 
 
 
做成如下图片,类型:
 
 
 
 
主视图代码:
 
#import "UserModel.h"
@interface Xib_1 : UIViewController
@property (nonatomic, weak) UserModel *model;
-(void)sentRegistMessage:(UserModel *)user;
@end
 
 
- (IBAction)FirstButton:(id)sender {
    Xib_2 *xib2 = [[Xib_2 alloc] initWithNibName:@"Xib_2" bundle:nil];
    xib2.parentVC = self;
    xib2.modalTransitionStyle = UIModalPresentationPageSheet;
    [self presentViewController:xib2 animated:YES completion:^{
        
    }];
}
 
-(void)sentRegistMessage:(UserModel *)user{
    self.Label_1.text = [NSString stringWithFormat:@"恭喜,注册成功,用户名:%@,密码:%@,请牢记,谢谢合作。", user.name, user.pass];
    self.Label_1.numberOfLines = 0;
}
 
 
XIB2:
 
#import "Xib_1.h"

@interface Xib_2 : UIViewController
@property (nonatomic, weak) Xib_1 *parentVC;
@end
 
- (IBAction)Button_submit:(id)sender {
    UserModel *model = [[UserModel alloc] init];
    model.name = _nameLabel.text;
    model.pass = _passLabel.text;
    [self.parentVC sentRegistMessage:model];
    [self dismissViewControllerAnimated:YES completion:^{
    }];
}
 
 
UserModel:
 
@interface UserModel : NSObject
@property (nonatomic, copy)NSString *name;
@property (nonatomic, copy)NSString *pass;
@end
 
用协议可以限制权限:
 
 
 
小球移动的动画:
 
 
@implementation QFAppDelegate{
    UIView *redView;
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    //动画
    redView=[[UIView alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
    redView.backgroundColor=[UIColor redColor];
    [self.window addSubview:redView];
   
    UIButton *button=[UIButton buttonWithType:UIButtonTypeCustom];
    [button setTitle:@"开始动画" forState:UIControlStateNormal];
    [button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
    [button addTarget:self action:@selector(startAnim:) forControlEvents:UIControlEventTouchUpInside];
    button.frame=CGRectMake(100, 400, 100, 44);
    [self.window addSubview:button];

self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];
    return YES;
}
-(void)startAnim:(id)sender{
    [UIView animateWithDuration:1 animations:^{
        redView.frame=CGRectMake(100, 300, 150, 150);//大小位置
        redView.transform=CGAffineTransformMakeRotation(M_PI_4);//角度
    } completion:^(BOOL finished) {
        if (finished) {
            [UIView animateWithDuration:2 animations:^{
                redView.transform=CGAffineTransformIdentity;//把变形还原
                redView.frame=CGRectMake(100, 100, 100, 100);
            }];
        }
    }];
}

 
 
如图,做一个三本书旋转的动画例子:
 
 
 
通过animateWithDuration:animations方法来实现动画旋转效果,方便,快捷!
 
 
代码如下:
 
- (void)viewDidLoad
{
    
    [super viewDidLoad];
    [self begin];
    // Do any additional setup after loading the view from its nib.
}

-(void)begin
{
    imageView_3 = [[UIImageView alloc] initWithFrame:CGRectMake(30, 50, 100, 150)];
    imageView_2 = [[UIImageView alloc] initWithFrame:CGRectMake(200, 50, 100, 150)];
    imageView_1 = [[UIImageView alloc] initWithFrame:CGRectMake(80, 110, 140, 200)];

imageView_1.image = [UIImage imageNamed:[NSString stringWithFormat:@"1.jpg"]];
    imageView_2.image = [UIImage imageNamed:[NSString stringWithFormat:@"2.jpg"]];
    imageView_3.image = [UIImage imageNamed:[NSString stringWithFormat:@"3.jpg"]];

[_Subview addSubview:imageView_1];
    [_Subview addSubview:imageView_2];
    [_Subview addSubview:imageView_3];
    [_Subview bringSubviewToFront:imageView_1];

}
- (IBAction)PrePress:(id)sender {
    [UIView animateWithDuration:1 animations:^{
        [_Subview sendSubviewToBack:imageView_3];
        imageView_1.frame = CGRectMake(30, 50, 100, 150);
        imageView_2.frame = CGRectMake(80, 110, 140, 200);
        imageView_3.frame = CGRectMake(200, 50, 100, 150);
    }completion:^(BOOL finished) {
        //imageView_2.frame = CGRectMake(30, 50, 100, 150);
        [_Subview bringSubviewToFront:imageView_2];
        UIImageView *tmp;
        tmp = imageView_1;
        imageView_1 = imageView_2;
        imageView_2 = imageView_3;
        imageView_3 = tmp;
    }];

}
- (IBAction)NextPress:(id)sender {
    
    [UIView animateWithDuration:1 animations:^{
        [_Subview sendSubviewToBack:imageView_2];
        imageView_1.frame = CGRectMake(200, 50, 100, 150);
        imageView_2.frame = CGRectMake(30, 50, 100, 150);
        imageView_3.frame = CGRectMake(80, 110, 140, 200);
    }completion:^(BOOL finished) {
        imageView_2.frame = CGRectMake(30, 50, 100, 150);
        [_Subview bringSubviewToFront:imageView_3];
        UIImageView *tmp;
        tmp = imageView_1;
        imageView_1 = imageView_3;
        imageView_3 = imageView_2;
        imageView_2 = tmp;
    }];
}

 
 
 
 
 
 
 
 
 
 

IOS UI 第四篇:基本UI的更多相关文章

  1. 环信 之 iOS 客户端集成四:集成UI

    在Podfile文件里加入 pod 'EaseUI', :git => 'https://github.com/easemob/easeui-ios-cocoapods.git' 然后在终端中的 ...

  2. 环信 之 iOS 客户端集成四:集成UI 之 会话列表

    1. 初始化 EaseConversationListViewController *chatListVC = [[EaseConversationListViewController alloc] ...

  3. IOS设计模式第四篇之装饰设计模式的类别设计模式

    装饰设计模式 装饰设计模式动态的添加行为和责任向一个对象而不修改他的任何代码.他是你子类化修改类的行为用通过另一个对象的包装的代替方法. 在Objective-c里面有很多这种设计模式的实现,像cat ...

  4. UGUI的优点新UI系统四 开源

    UGUI的优点新UI系统四 开源 新UI系统是开源的,所以开发者可以看到新UI系统实现的源码,并加以修改和使用. 开源授权协议——MIT/X11 Unity所搭载的新UI系统,是在开源授权协议MIT/ ...

  5. iOS进阶指南试读之UI篇

    iOS进阶指南试读之UI篇 UI篇 UI是一个iOS开发工程师的基本功.怎么说?UI本质上就是你调用苹果提供给你的API来完成设计师的设计.所以,想提升UI的功力也很简单,没事就看看UIKit里的各个 ...

  6. 四核驱动的三维导航—淘宝新UI(设计篇)

    前面有一篇博客说到了淘宝UWP的"四核驱动的三维导航—淘宝新UI(需求分析篇)",花了两周的时间实现了这个框架,然后又陆陆续续用了三周的时间完善它. 多窗口导航,与传统的导航方式的 ...

  7. IOS UI 第八篇:基本UI

    实现图片的滚动,并且自动停止在每张图片上     - (void)viewDidLoad{    [super viewDidLoad]; UIScrollView *scrollView = [[U ...

  8. Android异步处理系列文章四篇之一使用Thread+Handler实现非UI线程更新UI界面

    目录: Android异步处理一:使用Thread+Handler实现非UI线程更新UI界面Android异步处理二:使用AsyncTask异步更新UI界面Android异步处理三:Handler+L ...

  9. 游戏模块分析总结(2)之UI、操作篇

    转自:http://www.gameres.com/309812.html 游戏模块分析总结(2)之UI.操作篇 发布者: wuye | 发布时间: 2014-12-12 15:03| 评论数: 0 ...

随机推荐

  1. VisualStudio 怎么使用Visual Leak Detector

    VisualStudio 怎么使用Visual Leak Detector 那么在Windows下有什么好的内存泄漏检测工具呢?微软提供Visual Studio开发工具本身没有什么太好的内存泄漏检测 ...

  2. httpclient总结

    1.httpclient总结:一.基本知识准备(1)构建URI工具类,URIBuilder(2)HttpResponse类,可以添加Header信息 获取所有Header信息的方法,调用HeaderI ...

  3. Javascript学习4 - 对象和数组

    原文:Javascript学习4 - 对象和数组 在Javascript中,对象和数组是两种基本的数据类型,而且它们也是最重要的两种数据类型. 对象是已命名的值的一个集合,而数组是一种特殊对象,它就像 ...

  4. C#后台利用正则表达式查找匹配字符

    /// <summary>        /// 发送短信 系统固化短信        /// </summary>        /// <param name=&qu ...

  5. Codeforces548D:Mike and Feet(单调栈)

    Mike is the president of country What-The-Fatherland. There are n bears living in this country besid ...

  6. 经典算法题每日演练——第十七题 Dijkstra算法

    原文:经典算法题每日演练--第十七题 Dijkstra算法 或许在生活中,经常会碰到针对某一个问题,在众多的限制条件下,如何去寻找一个最优解?可能大家想到了很多诸如“线性规划”,“动态规划” 这些经典 ...

  7. Jquery实现 TextArea 文本框根据输入内容自动适应高度

    原文 Jquery实现 TextArea 文本框根据输入内容自动适应高度 在玩微博的时候我们可能会注意到一个细节就是不管是新浪微博还是腾讯微博在转发和评论的时候给你的默认文本框的高度都不会很高,这可能 ...

  8. ASP.NET 5- 1

    ASP.NET 5 入门(1) - 建立和开发ASP.NET 5 项目   ASP.NET入门(1) - 建立和开发ASP.NET 5 项目 建立项目 首先,目前只有VS 2015支持开发最新的ASP ...

  9. 基础总结篇之五:BroadcastReceiver应用具体解释

    問渠那得清如許?為有源頭活水來.南宋.朱熹<觀書有感> 据说程序猿是最爱学习的群体,IT男都知道,这个行业日新月异,必须不断地学习新知识,不断地为自己注入新奇的血液,才干使自己跟上技术的步 ...

  10. TDD(测试驱动开发)学习二:创建第一个TDD程序

    本节我们将学习一些测试驱动开发环境的搭建,测试驱动开发概念和流程.所涉及的内容全部会以截图的形式贴出来,如果你也感兴趣,可以一步一步的跟着来做,如果你有任何问题,可以进行留言,我也会很高兴的为你答疑. ...