文档章节

IOS-UI UI初步代码布局添加事件

_无问西东
 _无问西东
发布于 06/24 12:34
字数 655
阅读 9
收藏 1

ISO开发界面,UI是必须学习的一部分,其实很早之前想学来了,一直没有沉下心来学习。看到IOS的代码风格和布局就别扭的不行,跟java代码和android布局比较显得不是那么方便,所以一直到现在。先看一段代码

头文件:
//
//  RootViewController.h
//  UIPickerViewDemo
//
#import <UIKit/UIKit.h>

@interface RootViewController : UIViewController

@end



实现文件
//
//  RootViewController.m
//  UIPickerViewDemo
//

#import "RootViewController.h"

@interface RootViewController ()
@property (weak, nonatomic) IBOutlet UILabel *label;

- (IBAction)onClick:(id)sender;
@end

@implementation RootViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
    CGRect screen = [[UIScreen mainScreen] bounds];
    CGFloat screenHeight = screen.size.height;
    CGFloat screenWidth = screen.size.width;
    NSLog(@"(%0.00f,%0.00f)",screenWidth,screenHeight);
    
    CGRect buttonFrame = CGRectMake(0, screenHeight*3/5, screenWidth, screenHeight/10);
    UIButton *button = [[UIButton alloc] initWithFrame:buttonFrame];
    [button setTitleColor:UIColor.greenColor forState:UIControlStateNormal];
    [button setTitle:@"底部按钮" forState:UIControlStateNormal];
    [button addTarget:self 
               action:@selector(onButtonClick:)
               forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:button];
}


- (void) onButtonClick:(id)sender {
    UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"请确认" message:@"这是弹窗控件的消息message!" preferredStyle:UIAlertControllerStyleAlert];
    UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"CANCLE" 
        style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
        NSLog(@"action cancle!");
    }];
    [alertController addAction:cancelAction];
    [self presentViewController:alertController animated:YES completion:nil];
}
@end


自定义的UIViewController 需要跟AppDelegate先建立连接

//
//  AppDelegate.m
//  UIPickerViewDemo
//
#import "AppDelegate.h"
#import "RootViewController.h"

@interface AppDelegate ()

@end

@implementation AppDelegate


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    self.window = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen]bounds]];
    self.window.rootViewController = 
               [[RootViewController alloc]initWithNibName:@"RootViewController" bundle:nil];
    
    [self.window makeKeyAndVisible];
    return YES;
}

//省略 只看重点...

@end

其实上面只是先将main.storyboard和xcode自动建立的ViewController.h,ViewController.m文件删除了,然后自己创建了一个RootViewController文件,然后使用它来进行布局,可以一起使用xib来布局或者代码布局,但是只是这样运行起来还是看不到界面,因为工程还是会默认加载main.stroyboard,所以就需要修改工程属性,按照下面步骤:

1)delete 掉原来的三个文件ViewController.h、ViewController.m、main.storyboard

2)General --> TARGETS --> UIPickerViewDemo -->Deployment Info --> Main Interface 删除Main Interface中的Main,空着,如下图

3)添加视图控制器

Xcode -->  File --> New --> file

选择Cocoa Touch Clas --> Next弹出下面图,写入类名RootViewController,勾选Also create XIB file -->Next

 

然后就是建立连接,需要修改AppDelegate代码

自定义的UIViewController 需要跟AppDelegate先建立连接,见上面源代码
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  
    self.window = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen]bounds]];
    self.window.rootViewController =  [[RootViewController alloc]initWithNibName:@"RootViewController" bundle:nil];
    [self.window makeKeyAndVisible];
    return YES;
}

到此运行command + R 运行,点击“底部按钮”看效果,如下如

 

© 著作权归作者所有

共有 人打赏支持
_无问西东
粉丝 1
博文 42
码字总数 46928
作品 0
朝阳
高级程序员
经典Win95风格的iOS UI 组件集 ClassicKit

ClassicKit是 Windows 95 经典风格的iOS 开源UI 组件集。图标,窗框的资源都来自Windows 95。每个组件都像 UIKit 的对应组件一样使用,例如,CKButton 像 UIButton 一样响应手势事件。同时这...

marsdream
05/21
0
0
hbuilder + MUI 编写跨平台移动端app目前发现的优缺点

MUI这套UI框架,对于我这种CSS菜鸟来说,读懂里面的代码确实很难,而且怎么说框架中也存在的一些大坑,我这样的小白,要花上一段时间去学习。相对于react-native 这点的话还是facebook做的好...

Chendj
2015/10/26
0
2
微信公众平台开发:进阶篇(Web App开发入门)

WebApp与Native App有何区别呢? Native App: 1、开发成本非常大。一般使用的开发语言为JAVA、C++、Objective-C。 2、更新体验较差、同时也比较麻烦。每一次发布新的版本,都需要做版本打包...

LorinLuo
2015/03/06
0
0
iOS8开发~UI布局(一)初探Size Class

一、新特性Size Class介绍 随着iOS8系统的发布,一个全新的页面UI布局概念出现,这个新特性将颠覆包括iOS7及之前版本的UI布局方式,这个新特性就是Size Class。Size Class配合Auto Layout可以...

sea_god
2015/01/26
0
0
WebApp与Native App的区别

WebApp与Native App的区别 Native App: 1、开发成本非常大。一般使用的开发语言为JAVA、C++、Objective-C。 2、更新体验较差、同时也比较麻烦。每一次发布新的版本,都需要做版本打包,且需...

一真的鱼
07/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

day96-20180923-英语流利阅读-待学习

英国王子也不看好人工智能,理由却和霍金不同 Daniel 2018-09-23 1.今日导读 2016 年 3 月 9 日至 15 日,世界围棋冠军李世石与谷歌研发的计算机围棋程序 AlphaGo 进行人机大战并以 1 比 4 ...

飞鱼说编程
24分钟前
1
0
今天在码云遇到一个很有意思的人 for Per.js

今天在码云遇到一个很有意思的人,他在我的Per.js项目下面评论了一句,大意为“你试试这句代码,看看速度到底是你快还是Vue快”【当然,这个评论被我手残不小心删掉了...】。 然后我就试了,...

Skyogo
29分钟前
23
0
Java -------- 首字母相关排序总结

Java 字符串数组首字母排序 字符串数组按首字母排序:(区分大小写) String[] strings = new String[]{"ba","aa","CC","Ba","DD","ee","dd"}; Arrays.sort(strings); for (int i ...

切切歆语
31分钟前
1
0
还在用 Git 的 -f 参数强推仓库,你这是在作死!

最近,美国一个程序员因为同事不写注释,代码不规范,最严重的是天天使用 git push -f 参数强行覆盖仓库,该程序员忍无可忍向四名同事开抢,其中一人情况危急!!! 不写注释、代码不规范是一...

红薯
44分钟前
347
0
NPM报错终极大法

所有的错误基本上都跟node的版本相关 直接删除系统中的node 重新安装 sudo rm -rf /usr/local/{bin/{node,npm},lib/node_modules/npm,lib/node,share/man/*/node.*} 重新安装 $ n lts$ npm...

lilugirl
48分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部