第⼀讲:UIView及其⼦子类

iOSApple公司的移动操作系统,主要⽤用于iPhoneiPadiPad MiniiPod Touch等移动产品。 

UI(User Interface):⽤用户界⾯面,⽤用户能看到的各种各样的⻚页⾯面元

iOS App =各种各样的UI控件+业务逻辑和算法。

想要开发出⼀一款精美的应⽤用程序,需要熟练掌握各种UI控件的⽤用法。 

iOS发展到现在,从最初的iOS 2.0iOS 7.0,经历了⼀一些变化。

UI外观上,iOS 7发⽣生了重⼤大变⾰革。以线条为主,倾向于扁平化,更着重于体现应⽤用程序的内容。

iOS 7之前的UI外观则以虚拟化为主,注重⽴立体、阴影的配搭。⽆无形中降低了应⽤用程序内容的地位。 

一、UIWindo

什么是window?window是窗⼝口,每个app都需要借助window将内容展现给⽤用户看。

iOS中,使⽤用UIWindow类来表⽰示窗⼝口,通常⼀一个应⽤用程序只创建⼀一个UIWindow对象

window的主要作⽤用是呈现内容给⽤用户,我们不会对window做太多操作

如何创建window?在创建window的时候,需要指定window的⼤大⼩小。

通常window的⼤大⼩小(frame)与屏幕(UIScreen)⼤大⼩小⼀一致。⽰示例代码如下:

self.window= [[UIWindowalloc]initWithFrame:

[[UIScreen mainScreen] bounds]];

、UIView


什么是View?view(视图):代表屏幕上的⼀一个矩形区域iOS中⽤用UIView来表⽰示

视图前⾯面ppt⾥里看到的各种UI控件都属于view

不同的控件代表不同种类的viewiOS中所有能看到的内容都是view或其⼦子类。

如何创建view

创建视图的步骤如下:1、开辟空间并初始化视图(初始化时,给出视图位置和⼤大⼩小)2、对视图做⼀一些设置(⽐比如:背景颜⾊色)3、将视图添加到window上进⾏行显⽰示
4、释放视图对象

视图创建代码

视图创建

UIView *blueView = [[UIView alloc]
initWithFrame:CGRectMake(100, 100, 120, 100)];
blueView.backgroundColor = [UIColor blueColor];
[self.window addSubview:blueView];
[blueView release];


iOS坐标系

iOS提供了⽤用于布局的平⾯面坐标系。左上⾓角为坐标系的原点。

⽔水平向右:为x的正⽅方向。屏幕最左到最右可划分320等份。

垂直向下:为y的正⽅方向。屏幕最上到最下可划分480等份(3.5⼨寸屏幕)。

坐标系不是以像素作为划分依据,⽽而是以作为依据。 


frame

frame是⼀一个结构体,包含2部分内容:originsize

origin也是⼀一个结构体,包含2部分内容:xy

size同样是⼀一个结构体,包含2部分内容:widthheight

frameoriginsize是相对于⽗父视图来说的。

CGRectMake()函数可以帮我们快速构造⼀一个CGRect变量。 


center

center(中⼼心点)也是view重要的属性。

center是个结构体,包含2个部分:xy

centerframe有着密切的联系。

center.x = frame.origin.x + frame.size.width/2;

center.y = frame.origin.y + frame.size.height/2; 



bounds

bounds(边界)也是view的重要属性,⽤用于定义⾃自⼰己的边界。

它同frame⼀一样是⼀一个CGRect结构体变量。

当⼀一个view设置bounds时,会把⾃自⼰己当成⼀一个容器,定义⾃自⼰己的边界⼤大⼩小 以及 左上⾓角的初始坐标

当⼦子视图添加到此视图时,会根据bounds指定的原点(0,0)计算frame,⽽而⾮非左上⾓角。 





UILabel 


UILabel(标签):是显⽰示⽂文本的控件
AppUILabel是出现频率最⾼高的控件。
UILabelUIView⼦子类,作为⼦子类⼀一般是为了扩充⽗父类的功能,

UILabel扩展了⽂文字显⽰示的功能,UILabel是能显⽰示⽂文字的视图

项目中哪些地⽅方会⽤用UILabel?

AppUILabel是出现频率最⾼高的控件。

UILabelUIView⼦子类,作为⼦子类⼀一般是为了扩充⽗父类的功能,

UILabel扩展了⽂文字显⽰示的功能,UILabel是能显⽰示⽂文字的视图


项目中哪些地⽅方会⽤用UILabel?

文本内容

文本字体

文本颜⾊

文本对其⽅式

文本换⾏模式

文本行数

文本阴影


如何使⽤用UILabel

创建UILabel与创建UIView的步骤很相似。

1、开辟空间并初始化(如果本类有初始化⽅方法,使⽤用⾃自⼰己的;否则使⽤用⽗父类的)。
2、设置⽂文本控制相关的属性
3、添加到⽗父视图上,⽤用以显⽰示
4、释放


UILabel使⽤用⽰示例

UILabel *userNameLabel = [[UILabel alloc]
initWithFrame:CGRectMake(30, 100, 100, 30)];

userNameLabel.text=@"⽤用户名";[containerViewaddSubview:userNameLabel];[userNameLabelrelease];


控制⽂文本显⽰示

UILabel的主要作⽤用是显⽰示⼀一段⽂文本,因此提供了很多与显⽰示⽂文本相关的API



小节

UIView是所有可视化控件的基类。UILabel是具有特定外观特定功能的视图。UILabel侧重于⽂文本的呈现。


总结

Appwindow来呈现内容,⼀一个程序⼀一般只创建⼀一个window

App中能看到的元素,都是UIView及其⼦子类。

UIView作为所有可视化控件的BaseClass,提供了许多属性和⽅方法。显⽰示效果控制(framealpha等)、视图添加和移除(addSubview:等)、视图层次调整(bringSubviewToFront:等)等。

UILabel属于具体的视图,有⾃自⼰己的侧重点

UITextFieldUIButtondelegate 

/*****************************代码*************************************/

UIView里布局

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
        self.backgroundColor=[UIColor cyanColor];
        [self addAllViews];
    }
    return self;
}
-(void)addAllViews{
    UIImage *image=[UIImage imageNamed:@"1.jpg"];
    UIImageView *imageView=[[UIImageView alloc]initWithImage:image];
    imageView.userInteractionEnabled=YES;
    imageView.frame=CGRectMake(60, 100, 200, 200);
    imageView.backgroundColor=[UIColor redColor];
    imageView.tag=101;
    [self addSubview:imageView];
}


ViewController 布局


- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
        
        //self.view.backgroundColor=[UIColor cyanColor];
        self.rootView=[[RootView alloc]initWithFrame:[UIScreen mainScreen].bounds];
        
        
    }
    return self;
}
//加载视图
-(void)loadView
{
    self.view=self.rootView;

}


- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    UIImageView *imV=(UIImageView *)[self.rootView viewWithTag:101];
    //手势(常见六大手势)
    //所有手势都在控制器中添加
    //轻点
    UITapGestureRecognizer *tap=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(g:)];
    //设置点几下
    tap.numberOfTapsRequired=2;
    tap.numberOfTouchesRequired=1;
    [imV addGestureRecognizer:tap];
    
    //长按
    
     UILongPressGestureRecognizer *lp = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(lg:)];
     lp.minimumPressDuration = 1;//按下后几秒开始有反应
     
     [imV addGestureRecognizer:lp];
    
    //轻扫
    
     UISwipeGestureRecognizer *sp = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(sg:)];
     [imV addGestureRecognizer:sp];
     sp.numberOfTouchesRequired = 1;
     
    //拖动
    
    UIPanGestureRecognizer *pg = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(tuoDong:)];
    [imV addGestureRecognizer:pg];
    pg.minimumNumberOfTouches = 1;
    pg.maximumNumberOfTouches = 10;
    
    //捏合//
    
     UIPinchGestureRecognizer *nh = [[UIPinchGestureRecognizer alloc]
     initWithTarget:self action:@selector(nieHe:)];
     [imV addGestureRecognizer:nh];
     
    
    //旋转
    
     UIRotationGestureRecognizer *rg = [[UIRotationGestureRecognizer alloc]
     initWithTarget:self action:@selector(xz:)];
     
     [imV addGestureRecognizer:rg];
     
}


AppDelegate 添加ViewController

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    self.window.backgroundColor = [UIColor whiteColor];
    
    RootViewController *rv=[[RootViewController alloc]init];
    self.window.rootViewController=rv;
    
    
    
    
    [self.window makeKeyAndVisible];
    return YES;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值