文档章节

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

京一
 京一
发布于 06/24 12:34
字数 655
阅读 9
收藏 1
点赞 0
评论 0

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 运行,点击“底部按钮”看效果,如下如

 

© 著作权归作者所有

共有 人打赏支持
京一
粉丝 0
博文 14
码字总数 8710
作品 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
WebApp与Native App的区别

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

一真的鱼
07/03
0
0
Apple WatchKit 初探

Apple WatchKit 初探 2014/11/20 | 分类: IOS, 开发 | 0 条评论 | 标签: APPLE, APPLE WATCH 分享到:1 玩儿转Swift 玩转Bootstrap(基础) jQuery源码解析(架构与依赖模块) less即学即用...

andyhe91
2015/03/21
0
1
怀旧,开源项目将 Windows 95 画风带到 iOS 上

开发者天马行空的想法总是能够给人带来惊喜,日前有开发者写了一个适用于 iOS 的 Windows 95 经典风格 UI 组件集 ClassicKit,并将其开源在 GitHub 上。 该项目将 Windows 95 的风格带入了 ...

雨田桑
05/17
0
8
iOS8开发~UI布局(一)初探Size Class

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

sea_god
2015/01/26
0
0
(转)直接拿来用!最火的iOS开源项目(二)

“每一次的改变总意味着新的开始。”这句话用在iOS上可谓是再合适不过的了。GitHub上的iOS开源项目数不胜数,iOS每一次的改变,总会引发iOS开源项目的演变,从iOS 1.x到如今的iOS 7,有的项目...

孙启超
2013/06/21
0
1
Titanium 用户界面之布局结构及核心代码块

以Tab为界面基础的界面 以窗口为界面基础 目标 在本节,你将会看到Ti应用的核心代码块。 我们将会讨论Tab组件,windows窗口以及他们的核心功能 。 内容 如果用开发web的方式来比拟Ti里面的界...

lifer
2012/10/12
0
0
Titanium UI之TableViews组件

TableViews 1、为tableView增加数据 2、Row的属性 3、自定义Row,Row组,Row Section 4、在TableView的搜索 5、TableView的事件 内容 Ti里面创建一个TableView,如下: 这是其包含的属性: ...

lifer
2012/11/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

实现异步有哪些方法

有哪些方法可以实现异步呢? 方式一:java 线程池 示例: @Test public final void test_ThreadPool() throws InterruptedException { ScheduledThreadPoolExecutor scheduledThre......

黄威
今天
0
0
linux服务器修改mtu值优化cpu

一、jumbo frames 相关 1、什么是jumbo frames Jumbo frames 是指比标准Ethernet Frames长的frame,即比1518/1522 bit大的frames,Jumbo frame的大小是每个设备厂商规定的,不属于IEEE标准;...

六库科技
今天
0
0
牛客网刷题

1. 二维数组中的查找(难度:易) 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入...

大不了敲一辈子代码
今天
0
0
linux系统的任务计划、服务管理

linux任务计划cron 在linux下,有时候要在我们不在的时候执行一项命令,或启动一个脚本,可以使用任务计划cron功能。 任务计划要用crontab命令完成 选项: -u 指定某个用户,不加-u表示当前用...

黄昏残影
昨天
0
0
设计模式:单例模式

单例模式的定义是确保某个类在任何情况下都只有一个实例,并且需要提供一个全局的访问点供调用者访问该实例的一种模式。 实现以上模式基于以下必须遵守的两点: 1.构造方法私有化 2.提供一个...

人觉非常君
昨天
0
0
《Linux Perf Master》Edition 0.4 发布

在线阅读:https://riboseyim.gitbook.io/perf 在线阅读:https://www.gitbook.com/book/riboseyim/linux-perf-master/details 百度网盘【pdf、mobi、ePub】:https://pan.baidu.com/s/1C20T......

RiboseYim
昨天
1
0
conda 换源

https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/conda config --add channels https://mir......

阿豪boy
昨天
1
0
Confluence 6 安装补丁类文件

Atlassian 支持或者 Atlassian 缺陷修复小组可能针对有一些关键问题会提供补丁来解决这些问题,但是这些问题还没有放到下一个更新版本中。这些问题将会使用 Class 类文件同时在官方 Jira bug...

honeymose
昨天
0
0
非常实用的IDEA插件之总结

1、Alibaba Java Coding Guidelines 经过247天的持续研发,阿里巴巴于10月14日在杭州云栖大会上,正式发布众所期待的《阿里巴巴Java开发规约》扫描插件!该插件由阿里巴巴P3C项目组研发。P3C...

Gibbons
昨天
1
0
Tomcat介绍,安装jdk,安装tomcat,配置Tomcat监听80端口

Tomcat介绍 Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。 java程序写的网站用tomcat+jdk来运行...

TaoXu
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部