定制textField

//
//  HYBTextField.h
//  CloudShopping
//
//  Created by sixiaobo on 14-7-10.
//  Copyright (c) 2014年 com.Uni2uni. All rights reserved.
//

#import <UIKit/UIKit.h>

/*!
 * @brief 自定义TextField,用于修改默认textfield的属性为我们工程中需要的属性
 * @author huangyibiao
 */
@interface HYBTextField : UITextField

@property (nonatomic, strong) UIColor *placeholderColor;
@property (nonatomic, strong) UIFont  *placeholderFont;
@property (nonatomic, assign) CGFloat leftPadding;

// 默认leftPadding = 8.0
- (id)initWithFrame:(CGRect)frame placeholderColor:(UIColor *)color font:(UIFont *)font;
- (id)initWithFrame:(CGRect)frame placeholderColor:(UIColor *)color font:(UIFont *)font leftPadding:(CGFloat)leftPadding;

@end
//
//  HYBTextField.m
//  CloudShopping
//
//  Created by sixiaobo on 14-7-10.
//  Copyright (c) 2014年 com.Uni2uni. All rights reserved.
//

#import "HYBTextField.h"

@implementation HYBTextField

- (id)initWithFrame:(CGRect)frame placeholderColor:(UIColor *)color font:(UIFont *)font {
    return [self initWithFrame:frame placeholderColor:color font:font leftPadding:8];
}

- (id)initWithFrame:(CGRect)frame
   placeholderColor:(UIColor *)color
               font:(UIFont *)font
        leftPadding:(CGFloat)leftPadding {
    if (self = [super initWithFrame:frame]) {
        self.placeholderColor = color;
        self.placeholderFont = font;
        self.leftPadding = leftPadding;

        self.autocapitalizationType = UITextAutocapitalizationTypeNone;
        self.autocorrectionType = UITextAutocorrectionTypeNo;
        self.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
        self.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
        self.borderStyle = UITextBorderStyleNone;
        self.backgroundColor = [UIColor whiteColor];
    }
    return self;
}

- (void)drawPlaceholderInRect:(CGRect)rect {
    [kColorWith16RGB(0xa8a8a8) setFill];
    [[self placeholder] drawInRect:CGRectMake(self.leftPadding, rect.origin.y, rect.size.width, rect.size.height)
                          withFont:self.placeholderFont];
    return;
}

// 控制编辑文本的位置
- (CGRect)editingRectForBounds:(CGRect)bounds {
    CGFloat padding = self.leftPadding;
    if (self.textAlignment == NSTextAlignmentRight) {
        padding = 0;
    }
    CGRect inset = CGRectMake(bounds.origin.x + padding, bounds.origin.y,
                              bounds.size.width, bounds.size.height);
    return inset;
}

- (CGRect)placeholderRectForBounds:(CGRect)bounds {
    NSString *obtainSizeString = self.text;
    CGSize size = [obtainSizeString sizeWithFont:self.placeholderFont];
    return CGRectMake(bounds.origin.x, (bounds.size.height - size.height) / 2,
                      bounds.size.width, bounds.size.height);
}

// 控制显示文本的位置
- (CGRect)textRectForBounds:(CGRect)bounds {
    CGFloat padding = self.leftPadding;
    if (self.textAlignment == NSTextAlignmentRight) {
        padding = 0;
    }
    CGRect inset = CGRectMake(bounds.origin.x + padding, bounds.origin.y,
                              bounds.size.width, bounds.size.height);

    return inset;
}

@end
时间: 2024-11-05 16:25:43

定制textField的相关文章

在定制Eclipse SWT组件中实现MVC

Eclipse SWT(标准部件工具包)提供了丰富的 API 集来实现定制部件(widget).在这篇文章中,作者简要介绍了 MVC(模型-视图-控制器)架构,以结构化查看器的形式解释了 MVC 的当前实现,并介绍了一种使用定制 SWT 部件的实现. 什么是 MVC? MVC 架构(或设计模式)是图形用户界面(GUI)的设计样式,由三部分构成:模型.视图和控制器.MVC 把表示层从数据解耦出来,也把表示从数据的操作解耦出来. 实现 MVC 架构与其他类型的应用程序有所不同.主要的区别来自如何放置

使用DOJO开发定制小部件,第1部分:使用通用的markup处理程序生成DOJO markup

使用 DOJO 为 Business Space 开发小部件 我们为本系列开发的定制小部件基于 DOJO 1.2.3,已经使用 Mozilla Firefox 3.0.11 在 WebSphere Integration Developer V6.2 上的 Business Space V6.2 中测试过.但是,我们开发的通用框架概念也适用于不使用 Business Space 的 DOJO 应用程序.理解本系列需要具备 DOJO 和 iWidget 框架的基本知识. 我们要讨论在基于 DOJO

solr进阶: 如何定制搜索服务,扩展搜索逻辑

前两天发了篇"剖析solr实用性",主要黑了solr建索引让我觉得不舒服,还黑了solr只是个通用的丢入了servlet容器里的简单服务,事实证明我错了.这篇博客我要纠正并回答那篇博客里自己总结的问题:如何定制solr实现自己的搜索服务. solr是一个可扩展的服务,我们可以添加自己的包和类,在solr已经实现的default处理逻辑之上,再添加我们自己的搜索逻辑.实现手段就是继承solr的基础类,重写或者改写新的Filter,Search Component以及Request Han

android webview定制contextmenu

问题描述 android webview定制contextmenu 10C 如何实现图种的webview的上下文菜单.需求是获取选中的内容,进行操作. 解决方案 http://www.2cto.com/kf/201310/248762.html 解决方案二: android的ContextMenuAndroid ContextMenuandroid ContextMenu 解决方案三: webview里的问题是可以实现你说的功能,不需要单独设置. 解决方案四: 你把属性设置对就不会错了 解决方案

视频出炉:4月15日《阿里云RDS MySQL分支深度定制实战分享》

活动视频 <阿里云RDS MySQL分支深度定制实战分享> PDF地址:https://oss.aliyuncs.com/yqfiles/a5344b5961b367786a95620c636c4640.pdf 分享简介:阿里云RDS MySQL经过多年的积累,不断的进行性能优化,并定制了适合不同行业需求的功能,同时也向官方和社区贡献力量.本次主题主要介绍RDS MySQL分支的深度定制,包括功能扩展.资源管控.性能优化.数据安全.行业解决方案等. 分享者:赵建伟,现任阿里云数据库内核资深研发

定制UITabBar显示样式

定制UITabBar显示样式   思路是这样子的: 1. 初始化UITabBarController,并装载进来几个其他的ViewController 2. 获取每个控制器的UITabBarItem 3. 单独配置每个ViewController对应的UITabBarItem(其中,文字可以设置偏移量) 就这么简单哦!       问:如何设置UITabBarController高亮选中的颜色值呢?   问:[UITabBar appearance]能干什么? 他是进行UITabBarContr

随着HTML5的普及,定制化的移动CRM应用时代即将到来

 近年来,移动CRM应用异常火爆,大多为原生APP形式,且大部分产品不支持定制.对于很多用户来讲,已经不再满足于只是有一个移动端CRM了,更希望用上根据自身业务流程定制的移动CRM.     在移动端,用原生APP进行这样的纯个性化定制的成本是很高的.但使用HTML5就变得很容易了,HTML5的特点是跨平台.跨设备一次开发,多处使用,用户无需下载,瞬间打开,用户无需升级,永远最新,无需经过应用商店发布.     当然,HTML5也有它的局限性,比如,使用CSS样式或者CSS动画的用户体验无法与原

dijit样式定制之TextBox(一)

参考资料:http://dojotoolkit.org/reference-guide/1.9/dijit/themes.html http://archive.dojotoolkit.org/nightly/dojotoolkit/dijit/themes/themeTester.html http://www.lesscss.net/article/home.html 这系列博客主要因为工作中经常需要更改dijit样式,每次都需要看dijit的DOM结构来更改,好多次都是改了一个class样

ABC定制视图导航控制器

ABCustomUINavigationController  ABC定制视图导航控制器   Subclass of UINavigationController for overwriting push and pop methods to create new transitions effects. Currently it has been implemented two transition animations:继承至 UINavigationController (UI导航控制器)