文档章节

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

_无问西东
 _无问西东
发布于 06/24 12:34
字数 655
阅读 13
收藏 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
博文 55
码字总数 90507
作品 0
朝阳
高级程序员
私信 提问
iOS WKWebView UI增强(上拉刷新,JS交互,加载进度条)

iOS WKWebView UI增强(上拉刷新,JS交互,加载进度条) 需求:WKWebView的一些增加模块,例如上拉刷新,JS交互,加载进度条等等持续更新 阅读前提: } catch(error) { } } (void)headerRefres...

__小___东邪___
11/06
0
0
经典Win95风格的iOS UI 组件集 ClassicKit

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

marsdream
05/21
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
hbuilder + MUI 编写跨平台移动端app目前发现的优缺点

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

Chendj
2015/10/26
0
2
企鹅电竞weex实践——UI开发篇

腾讯DeepOcean原创文章:dopro.io/egame-weex-… 随着电竞业务的不断发展,页面功能越来越多,交互逻辑更加复杂,类似无限滚动、上拉刷新、横竖切换滚动等形式在业务中已是标配,经过重重优化...

腾讯DeepOcean
11/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

AS连接网易Mumu模拟器

1、安装模拟器 打开这个网址现在模拟器然后安装 http://mumu.163.com/ 2、安装完成后启动模拟器 3、进入模拟器安装目录 例如本机的安装目录:C:\Program Files (x86)\MuMu\emulator\nemu\vmo...

HGMrWang
13分钟前
5
0
设计要做到扩展性强还挺难的

概述 在日常开发中,有时候你的上司会跟你说,这个模块的设计扩展性要高。把这句话说出来很简单,但是要做到则非常难。导致难的其中一个因素是: 你不熟悉这个行业的业务的玩法 我举个例子来...

Sam哥哥聊技术
15分钟前
2
0
聊聊 scala 的模式匹配

一. scala 模式匹配(pattern matching) pattern matching 可以说是 scala 中十分强大的一个语言特性,当然这不是 scala 独有的,但这不妨碍它成为 scala 的语言的一大利器。 scala 的 patt...

终日而思一
16分钟前
1
0
Spring事物手动回滚

手动回滚: 方法1:在service层方法的catch语句中增加:TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();语句,手动回滚,这样上层就无需去处理异常(现在项目的做法)...

寒风中的独狼
21分钟前
0
0
直角三角形的三角函数

sinA = a/c;A = asin(a/c); 特殊角度的三角函数值

一个小妞
29分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部