iOS开发之自定义View

iOS sdk中的view是UIView,我们可以很方便的自定义一个View。

创建一个 Window-based Application程序,在其中添加一个Hypnosister的类,这个类选择继承UIObject。修改这个类,使他继承:UIView

@interface HypnosisView : UIView

自定义View的关键是定义drawRect: 方法,因为主要是通过重载这个方法,来改变view的外观。例如,可以使用下面代码绘制一个很多环中环的效果的view。

我们可以继续绘制一些东西,比如绘制文字,将下面代码添加带这个方法后面。

// Create a string    NSString *text = @"我是朱祁林,不是朱麒麟";    // Get a font to draw it in    UIFont *font = [UIFont boldSystemFontOfSize:28];    // Where am I going to draw it?    CGRect textRect;    textRect.size = [text sizeWithFont:font];    textRect.origin.x = center.x - textRect.size.width / 2.0;    textRect.origin.y = center.y - textRect.size.height / 2.0;    // Set the fill color of the current context to black     [[UIColor blackColor] setFill];    // Set the shadow to be offset 4 points right, 3 points down,     // dark gray and with a blur radius of 2 points     CGSize offset = CGSizeMake(4, 3);    CGColorRef color = [[UIColor darkGrayColor] CGColor];    CGContextSetShadowWithColor(context, offset, 2.0, color);    // Draw the string    [text drawInRect:textRect            withFont:font];

效果:

如果view过大,我们可以把它放置到一个UIScrollView中间,这样就可以进行拖动了。UIScrollView与View的关系如下图:

使用下面代码创建一个比iPhone屏幕大4倍的View,然后通过UIScrollView来展示,代码如下:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{

    //创建一个窗体大小的CGRect    CGRect wholeWindow = [[self window] bounds];

    // 创建一个窗体大小的HypnosisView实例    view = [[HypnosisView alloc] initWithFrame:wholeWindow];

    UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:wholeWindow];    [[self window] addSubview:scrollView];    // Make your view twice as large as the window    CGRect reallyBigRect;    reallyBigRect.origin = CGPointZero;    reallyBigRect.size.width = wholeWindow.size.width * 2.0;    reallyBigRect.size.height = wholeWindow.size.height * 2.0;    [scrollView setContentSize:reallyBigRect.size];    CGPoint offset;    offset.x = wholeWindow.size.width * 0.5;    offset.y = wholeWindow.size.height * 0.5;    [scrollView setContentOffset:offset];

    // Create the view    view = [[HypnosisView alloc] initWithFrame:reallyBigRect];    [view setBackgroundColor:[UIColor clearColor]];    [scrollView addSubview:view];    [scrollView release];        [[UIApplication sharedApplication] setStatusBarHidden:YES                                            withAnimation:UIStatusBarAnimationFade];    [[self window] makeKeyAndVisible];    return YES;

}

这样我们就可以拖动来展示看不到的view了,如下图:

通过UIScrollView我们还可以设置view的缩放功能,将下面代码添加到中。这样我们就可以使用两根手指缩放view了。

   // Enable zooming    [scrollView setMinimumZoomScale:0.5];    [scrollView setMaximumZoomScale:5];    [scrollView setDelegate:self];

总结:文本简单的总结了一下自定义view的使用。

时间: 2024-10-05 20:17:12

iOS开发之自定义View的相关文章

详解iOS开发之自定义View

iOS开发之自定义View是本文要将介绍的内容,iOS SDK中的View是UIView,我们可以很方便的自定义一个View.创建一个 Window-based Application程序,在其中添加一个Hypnosister的类,这个类选择继承UIObject.修改这个类,使他继承:UIView @interface HypnosisView : UIView 自定义View的关键是定义drawRect: 方法,因为主要是通过重载这个方法,来改变view的外观.例如,可以使用下面代码绘制一个很

IOS开发之自定义系统弹出键盘上方的view

IOS开发之自定义系统弹出键盘上方的view 分类: IOS 2014-11-18 09:26 1304人阅读 评论(0) 收藏 举报 目录(?)[+] 这篇文章解决的一个开发中的实际问题就是:当弹出键盘时,自定义键盘上方的view.目前就我的经验来看,有两种解决方法.一个就是利用 UITextField或者UITextView的inputAccessoryView属性,另一种,就是监听键盘弹出的notification来自 己解决相关视图的位置问题. 第一种解决方法相对比较简单,第二种的方法中

iOS开发之自定义表情键盘(组件封装与自动布局)

下面的东西是编写自定义的表情键盘,话不多说,开门见山吧!下面主要用到的知识有MVC, iOS开发中的自动布局,自定义组件的封装与使用,Block回调,CoreData的使用.有的小伙伴可能会问写一个自定义表情键盘肿么这么麻烦?下面将会介绍我们如何用上面提到的东西来定义我们的表情键盘的.下面的内容会比较多,这篇博文还是比较有料的. 还是那句话写技术博客是少不了代码的,下面会结合代码来回顾一下iOS的知识,本篇博文中用到的知识点在前面的博客中都能找到相应的内容,本篇算是一个小小的功能整合.先来张图看

iOS开发中自定义字体的方法

http://www.cnblogs.com/iyou/archive/2014/05/25/3751669.html 1. 首先下载你想要设置的字体库,例如设置方正启体简体 2. 添加到工程,一定要注意勾选红色框框处,默认是不勾选的  添加以后 3.在plist文件中添加 4.现在已经添加成功了,但是要使用就必须知道FontName,用以下代码可查到 NSArray *familyNames = [[NSArray alloc] initWithArray:[UIFont familyName

IOS开发-点击View取消键盘输入

要想在一个TextField等输入框中取消输入,有几个办法,第一个是在键盘添加按钮,第二个就是通过判断然后取消键盘的输入了. 下面讲第二个 写一个方法并实现 // .h文件 - (IBAction)cancelInput:(id)sender; // .m文件 - (void)cancelInput:(id)sender { [TextField1 resignFirstResponder]; [TextField2 resignFirstResponder]; [TextView resign

IOS 开发中 Whose view is not in the window hierarchy 错误的解决办法

在 IOS 开发当中经常碰到 whose view is not in the window hierarchy 的错误,该错误简单的说,是由于 "ViewController" 还没有被夹在,就调用该 ViewController 或者 ViewController 内的方法时,就会报这个错误. 在不同地方调用 ViewController,解决的方法也不太一样. 1. 在 一个 ViewController 里面调用另外一个 ViewController 是出现这个错误: 该错误一

[IOS Tableview] cell自定义view显示错误问题

问题介绍:按照tableviewcell的tag自定义cell的view显示的时候,会出现拖动时显示错误情况. 我做的是一个下载界面,我为了简化问题,就把问题设定为,tag==1的cell已下载,加载时就把已下载的cell的label显示为蓝色.其余默认为黑. 比如我在代码里,想要tag==1的cell的label字体为蓝色,这样写就会出现上下拖动时tag==11的也出现蓝色(视具体情况而定). if([cell.tag==1){ //tag==1就把label显示为蓝色 cell.label.

【Swift】IOS开发中自定义转场动画

在IOS开发中,我们model另外一个控制器的时候,一般都使用的自定义的转场动画. 其实我们可以自定义一些转场动画.达到不同的转场效果. 步骤如下:(photoBrowser是目标控制器) 1.在源控制器中,设置目标控制器的转场代理为 self 1 //设置Model转场代理 2  photoBrowser.transitioningDelegate = self 2.同时设置目标控制器的model类型 1 //设置Model类型 2 photoBrowser.modalPresentation

Android开发之自定义View专题(三):自定义GridView

gridview作为android开发中常用的组件,其功能十分强大.但是,我们有时候有很多特殊的需求,需要在其基础上进行改造.有时候会有移动gridView中item位置的需求,这个网上已经有很多例子,博主就不在描述.今天博主讲的是移动gridView中item中的内容.博主没看过网上那些移动item位置的demo,不知道其原理是不是和博主想的一样.博主思考过,似乎博主的这种实现原理似乎也可以用作实现移动item位置.而之前博主百思不得其解的小米手机的桌面的自定义乱序排放,似乎也可以用这个原理去