博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS导航栏编辑电影简单介绍
阅读量:6176 次
发布时间:2019-06-21

本文共 15079 字,大约阅读时间需要 50 分钟。

关于屏幕适配的问题,做了简单的处理,即使用屏幕比例来布局,欢迎指正!(纯手写代码)

首先先来展示一下效果,运行时第一个界面:

初始化界面

进行修改:

修改界面

点击确认:

编辑之后的界面

下面是具体的代码:

注:要先把movie类及图片素材添加好。

AppDelegate.m文件

1 #import "AppDelegate.h" 2 #import "FirstViewController.h" 3 @interface AppDelegate () 4  5 @end 6  7 @implementation AppDelegate 8  9 10 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {11     // Override point for customization after application launch.12     13     self.window = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen]bounds]];14     15     FirstViewController *firstView = [[FirstViewController alloc]init];16 17     18     //导航控制器(它本身没有视图,故将firstview设置为它的根视图)19     UINavigationController * navigation = [[UINavigationController alloc]initWithRootViewController:firstView];20     21     //将导航的根视图加到窗口的根视图22     self.window.rootViewController = navigation;23     self.window.backgroundColor = [UIColor grayColor];24     25     //视图背景色(图片自动适应屏幕大小)26     UIImageView* imageView = [[UIImageView alloc] initWithFrame:[[UIScreen mainScreen]bounds]];27     imageView.image = [UIImage imageNamed:@"image.jpg"];28     29     [self.window addSubview:imageView];30     [self.window makeKeyAndVisible];31     32     return YES;33 }34 35 - (void)applicationWillResignActive:(UIApplication *)application {36     // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.37     // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.38 }39 40 - (void)applicationDidEnterBackground:(UIApplication *)application {41     // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.42     // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.43 }44 45 - (void)applicationWillEnterForeground:(UIApplication *)application {46     // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.47 }48 49 - (void)applicationDidBecomeActive:(UIApplication *)application {50     // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.51 }52 53 - (void)applicationWillTerminate:(UIApplication *)application {54     // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.55 }56 57 @end

 

Movie.h文件

1 #import 
2 3 @interface Movie : NSObject 4 { 5 NSString *title;//电影名 6 NSNumber *money;//票房 7 NSString *descrip;//简介 8 } 9 @property(nonatomic,retain) NSString *title;10 @property(nonatomic,retain) NSNumber *money;11 @property(nonatomic,retain) NSString *descrip;12 -(id)initWithTitle:(NSString*)_t andMoney:(NSNumber*)_m andDescrip:(NSString*)_d;13 14 15 @end

 

 

Movie.m文件

1 #import "Movie.h" 2  3 @implementation Movie 4 @synthesize title,money,descrip; 5 -(id)initWithTitle:(NSString*)_t andMoney:(NSNumber*)_m andDescrip:(NSString*)_d 6 { 7     if (self = [super init]) { 8         self.title = _t; 9         self.money = _m;10         self.descrip = _d;11     }12     return self;13 }14 15 @end

 

 

FirstViewController.h文件

1 #import 
2 #import "Movie.h" 3 @interface FirstViewController : UIViewController 4 { 5 Movie * movie; 6 UILabel *label5; 7 UILabel *label6; 8 UITextView *firstTextView; 9 }10 11 @property (nonatomic,retain) UILabel *label5;12 @property (nonatomic,retain) UILabel *label6;13 @property (nonatomic,retain) UITextView *firstTextView;14 @end

 

 

FirstViewController.m文件

1 #import "FirstViewController.h"  2 #import "SecondViewController.h"  3   4 @interface FirstViewController ()  5   6 @end  7   8 @implementation FirstViewController  9 @synthesize label5,label6,firstTextView; 10 - (void)viewDidLoad { 11     [super viewDidLoad]; 12     // Do any additional setup after loading the view. 13     CGRect rect = [[UIScreen mainScreen]bounds]; 14     CGFloat x = rect.size.width; 15     CGFloat y = rect.size.height; 16  17     //创建标签 18     UILabel *label1 = [[UILabel alloc]initWithFrame:CGRectMake(0.18*x, 0.07*y, 0.7*x , 0.2*y)]; 19     label1.text = @"电影简介"; 20     label1.font = [UIFont systemFontOfSize:0.12*x]; 21     label1.textAlignment = NSTextAlignmentCenter; 22     label1.textColor = [UIColor yellowColor]; 23  24     UILabel *label2 = [[UILabel alloc]initWithFrame:CGRectMake(0.1*x, 0.25*y, 0.25*x, 0.06*y)]; 25     label2.text = @"名字:"; 26     label2.font = [UIFont systemFontOfSize:0.08*x]; 27     label2.textAlignment = NSTextAlignmentCenter; 28     label2.textColor = [UIColor yellowColor]; 29  30     UILabel *label3 = [[UILabel alloc]initWithFrame:CGRectMake(0.1*x, 0.35*y, 0.25*x, 0.06*y)]; 31     label3.text = @"票房:"; 32     label3.font = [UIFont systemFontOfSize:0.08*x]; 33     label3.textAlignment = NSTextAlignmentCenter; 34     label3.textColor = [UIColor yellowColor]; 35  36     UILabel *label4 = [[UILabel alloc]initWithFrame:CGRectMake(0.1*x, 0.45*y, 0.25*x, 0.06*y)]; 37     label4.text = @"简介:"; 38     label4.font = [UIFont systemFontOfSize:0.08*x]; 39     label4.textAlignment = NSTextAlignmentCenter; 40     label4.textColor = [UIColor yellowColor]; 41  42     [self.view addSubview:label1]; 43     [self.view addSubview:label2]; 44     [self.view addSubview:label3]; 45     [self.view addSubview:label4]; 46  47  48     //初始化movie 49     NSNumber *num = [NSNumber numberWithInteger:123456]; 50     movie = [[Movie alloc]initWithTitle:@"疯狂动物城" andMoney:num andDescrip:@"非常好看,无法形容,值得大家去观赏!"]; 51  52     label5 = [[UILabel alloc]initWithFrame:CGRectMake(0.3*x, 0.25*y, 0.5*x, 0.06*y)]; 53     label5.text = movie.title; 54     label5.font = [UIFont systemFontOfSize:0.08*x]; 55     label5.textAlignment = NSTextAlignmentCenter; 56     label5.textColor = [UIColor orangeColor]; 57  58     label6 = [[UILabel alloc]initWithFrame:CGRectMake(0.34*x, 0.35*y, 0.5*x, 0.06*y)]; 59     label6.text = [NSString stringWithFormat:@"%@",movie.money]; 60     label6.font = [UIFont systemFontOfSize:0.08*x]; 61     label6.textAlignment = NSTextAlignmentLeft; 62     label6.textColor = [UIColor orangeColor]; 63  64     //设置显示行数 65     //label6.numberOfLines = 0;//0是不限制 66  67     //简介用文本视图显示 68     firstTextView = [[UITextView alloc]initWithFrame:CGRectMake(0.33*x, 0.45*y,0.6*x, 0.5*y)]; 69     firstTextView.text = movie.descrip; 70     firstTextView.font = [UIFont systemFontOfSize:0.06*x]; 71     firstTextView.textColor = [UIColor orangeColor]; 72     //让firstTextView不可修改 73     firstTextView.editable = NO; 74     //设置firstTextView背景透明 75     [firstTextView setBackgroundColor:[UIColor clearColor]]; 76  77     [self.view addSubview:label5]; 78     [self.view addSubview:label6]; 79     [self.view addSubview:firstTextView]; 80  81  82  83     //导航的标题(在导航栏中间显示) 84     self.navigationItem.title = @"电影详情"; 85  86     //导航标题的属性 87     [self.navigationController.navigationBar setTitleTextAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:0.08*x],NSForegroundColorAttributeName:[UIColor redColor]}]; 88  89     //设置导航栏的背景图片 90     [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"image.jpg"] forBarMetrics:UIBarMetricsDefault]; 91     //导航的右按钮 92     self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]initWithTitle:@"编辑" style:UIBarButtonItemStylePlain target:self action:@selector(rightBtn:)]; 93  94     //设置右按钮属性 95     NSMutableDictionary *rightAttrs = [NSMutableDictionary dictionary]; 96     rightAttrs[NSFontAttributeName] = [UIFont systemFontOfSize:0.06*x]; 97     rightAttrs[NSForegroundColorAttributeName] = [UIColor redColor]; 98     [self.navigationItem.rightBarButtonItem setTitleTextAttributes:rightAttrs forState:UIControlStateNormal]; 99 100 101 102 }103 //右按钮方法104 -(void)rightBtn:(id)sender105 {106     SecondViewController *secondView = [[SecondViewController alloc]init];107     //将数据进行同步显示108     secondView.mv = movie;109     //加入新界面110     [self.navigationController pushViewController:secondView animated:YES];111 }112 //显示第一个界面之前进行刷新113 -(void)viewWillAppear:(BOOL)animated114 {115     label5.text = movie.title;116     label6.text = [NSString stringWithFormat:@"%@",movie.money];117     firstTextView.text = movie.descrip;118 }119 120 121 - (void)didReceiveMemoryWarning {122     [super didReceiveMemoryWarning];123     // Dispose of any resources that can be recreated.124 }125 126 /*127 #pragma mark - Navigation128 129 // In a storyboard-based application, you will often want to do a little preparation before navigation130 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {131     // Get the new view controller using [segue destinationViewController].132     // Pass the selected object to the new view controller.133 }134 */135 136 @end

 

 

SecondViewController.h文件

1 #import 
2 #import "movie.h" 3 @interface SecondViewController : UIViewController 4 { 5 6 UITextField *texFile1; 7 UITextField *texFile2; 8 UITextView *seTextView; 9 10 }11 @property (nonatomic,retain) Movie *mv;12 @end

 

 

SecondViewController.m文件

1 #import "SecondViewController.h"  2 @interface SecondViewController ()  3   4 @end  5   6 @implementation SecondViewController  7 @synthesize mv;  8 - (void)viewDidLoad {  9     [super viewDidLoad]; 10     // Do any additional setup after loading the view. 11  12     CGRect rect = [[UIScreen mainScreen]bounds]; 13     CGFloat x = rect.size.width; 14     CGFloat y = rect.size.height; 15  16     //创建标签 17     UILabel *label1 = [[UILabel alloc]initWithFrame:CGRectMake(0.18*x, 0.07*y, 0.7*x , 0.2*y)]; 18     label1.text = @"电影简介"; 19     label1.font = [UIFont systemFontOfSize:0.12*x]; 20     label1.textAlignment = NSTextAlignmentCenter; 21     label1.textColor = [UIColor yellowColor]; 22  23     UILabel *label2 = [[UILabel alloc]initWithFrame:CGRectMake(0.1*x, 0.25*y, 0.25*x, 0.06*y)]; 24     label2.text = @"名字:"; 25     label2.font = [UIFont systemFontOfSize:0.08*x]; 26     label2.textAlignment = NSTextAlignmentCenter; 27     label2.textColor = [UIColor yellowColor]; 28  29     UILabel *label3 = [[UILabel alloc]initWithFrame:CGRectMake(0.1*x, 0.35*y, 0.25*x, 0.06*y)]; 30     label3.text = @"票房:"; 31     label3.font = [UIFont systemFontOfSize:0.08*x]; 32     label3.textAlignment = NSTextAlignmentCenter; 33     label3.textColor = [UIColor yellowColor]; 34  35     UILabel *label4 = [[UILabel alloc]initWithFrame:CGRectMake(0.1*x, 0.45*y, 0.25*x, 0.06*y)]; 36     label4.text = @"简介:"; 37     label4.font = [UIFont systemFontOfSize:0.08*x]; 38     label4.textAlignment = NSTextAlignmentCenter; 39     label4.textColor = [UIColor yellowColor]; 40  41     [self.view addSubview:label1]; 42     [self.view addSubview:label2]; 43     [self.view addSubview:label3]; 44     [self.view addSubview:label4]; 45  46     //文本框设置 47     texFile1 = [[UITextField alloc]initWithFrame:CGRectMake(0.34*x, 0.26*y, 0.5*x, 0.06*y)]; 48     texFile1.text = mv.title; 49     texFile1.textColor = [UIColor orangeColor]; 50     texFile1.font = [UIFont systemFontOfSize:0.06*x]; 51     //输入框的风格 52     texFile1.borderStyle = UITextBorderStyleLine; 53     //默认显示的文字及颜色 54     texFile1.placeholder = @"请输入电影名称"; 55     [texFile1 setValue:[UIColor redColor] forKeyPath:@"_placeholderLabel.textColor"]; 56  57     texFile2 = [[UITextField alloc]initWithFrame:CGRectMake(0.34*x, 0.36*y, 0.5*x, 0.06*y)]; 58     texFile2.text = [NSString stringWithFormat:@"%@",mv.money]; 59     texFile2.textColor = [UIColor orangeColor]; 60     texFile2.font = [UIFont systemFontOfSize:0.06*x]; 61     //输入框的风格 62     texFile2.borderStyle = UITextBorderStyleLine; 63     //默认显示的文字及颜色 64     texFile2.placeholder = @"请输入票房"; 65     [texFile2 setValue:[UIColor redColor] forKeyPath:@"_placeholderLabel.textColor"]; 66  67     seTextView = [[UITextView alloc]initWithFrame:CGRectMake(0.33*x, 0.46*y,0.6*x, 0.5*y)]; 68     seTextView.text = mv.descrip; 69     seTextView.textColor = [UIColor orangeColor]; 70     seTextView.font = [UIFont systemFontOfSize:0.06*x]; 71     //设置seTextView背景透明 72     [seTextView setBackgroundColor:[UIColor clearColor]]; 73  74     [self.view addSubview:texFile1]; 75     [self.view addSubview:texFile2]; 76     [self.view addSubview:seTextView]; 77  78     //导航标题 79     self.navigationItem.title = @"编辑信息"; 80     //导航右按钮 81     self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]initWithTitle:@"确认" style:UIBarButtonItemStyleDone target:self action:@selector(rightBtn:)]; 82     //设置右按钮属性 83     NSMutableDictionary *leftAttrs = [NSMutableDictionary dictionary]; 84     leftAttrs[NSFontAttributeName] = [UIFont systemFontOfSize:0.06*x]; 85     leftAttrs[NSForegroundColorAttributeName] = [UIColor redColor]; 86     [self.navigationItem.rightBarButtonItem setTitleTextAttributes:leftAttrs forState:UIControlStateNormal]; 87  88     //导航左按钮 89     self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]initWithTitle:@"返回" style:UIBarButtonItemStyleDone target:self action:@selector(leftBtn:)]; 90     //设置左按钮属性 91     NSMutableDictionary *rightAttrs = [NSMutableDictionary dictionary]; 92     rightAttrs[NSFontAttributeName] = [UIFont systemFontOfSize:0.06*x]; 93     rightAttrs[NSForegroundColorAttributeName] = [UIColor redColor]; 94     [self.navigationItem.leftBarButtonItem setTitleTextAttributes:rightAttrs forState:UIControlStateNormal]; 95  96 } 97 //设置右按钮方法 98 -(void)rightBtn:(id)sender 99 {100     mv.title = texFile1.text;101     mv.money = [NSNumber numberWithInteger:texFile2.text.integerValue];102     mv.descrip = seTextView.text;103 104     [self.navigationController popViewControllerAnimated:YES];105 106 }107 //设置左按钮方法108 -(void)leftBtn:(id)sender109 {110 111     [self.navigationController popViewControllerAnimated:YES];112 113 }114 //设置键盘,点击空白的地方响应115 -(void)touchesBegan:(NSSet
*)touches withEvent:(UIEvent *)event116 {117 //键盘消失118 [texFile1 resignFirstResponder];119 [texFile2 resignFirstResponder];120 [seTextView resignFirstResponder];121 122 }123 124 - (void)didReceiveMemoryWarning {125 [super didReceiveMemoryWarning];126 // Dispose of any resources that can be recreated.127 }128 129 /*130 #pragma mark - Navigation131 132 // In a storyboard-based application, you will often want to do a little preparation before navigation133 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {134 // Get the new view controller using [segue destinationViewController].135 // Pass the selected object to the new view controller.136 }137 */138 139 @end

 

转载于:https://www.cnblogs.com/czhz/p/5338225.html

你可能感兴趣的文章
在Ubuntu Kylin下安装JDK1.8
查看>>
Hadoop 学习一
查看>>
Linux中生成/etc/shadow的加密密码
查看>>
《gcc五分钟系列》第三节:-o选项
查看>>
批量检测主机存活状态
查看>>
解决 error: gnu/stubs-32.h: No such file or directory
查看>>
imread 函数 的相关细节
查看>>
分布式和事务
查看>>
C#学习常用类(1002)---KeyValuePair<TKey, TValue> 结构
查看>>
浅谈grep命令查找匹配内容的使用、参数、正则
查看>>
磁盘配额
查看>>
UserInputControls用户输入控制
查看>>
我的友情链接
查看>>
Nginx+Lua架构开发目录贴
查看>>
mysql备份方法(热备)
查看>>
scala匿名函数
查看>>
vlan技术【实现】vlan简介和SVI实现不同vlan间通信
查看>>
scrapy爬虫初步尝试
查看>>
陈松松:视频制作不出来,跟这7个思维有九成关系
查看>>
形参和实参有何区别
查看>>