此方法在IOS7中不适合

一、自定义AlertView

  1、首先新建一个OC类继承与AlertView。

  2、然后再.m中添加方法 - (void)layoutSubviews

    可以再这个方法里边改变alertView的背景图片,各个按钮的图片,等一系列的操作

    示例代码如下:

    

for (UIView *v inself.subviews) {

if ([v isKindOfClass:[UIImageView class]]) {

UIImageView *imageV = (UIImageView *)v;

UIImage *image = [UIImage imageNamed:kAlertViewBackground];

image = [[image stretchableImageWithLeftCapWidth:0topCapHeight:kAlertViewBackgroundCapHeight] retain];

[imageV setImage:image];//替换alertView地背景图片

}

if ([v isKindOfClass:[UILabel class]]) {

UILabel *label = (UILabel *)v;

if ([label.text isEqualToString:self.title]) {

label.font = [kAlertViewTitleFont retain];

label.numberOfLines = 0;

label.lineBreakMode = UILineBreakModeWordWrap;

label.textColor = kAlertViewTitleTextColor;

label.backgroundColor = [UIColor clearColor];

label.textAlignment = UITextAlignmentCenter;

label.shadowColor = kAlertViewTitleShadowColor;

label.shadowOffset = kAlertViewTitleShadowOffset;//替换Title的样式

}else{

label.font = [kAlertViewMessageFont retain];

label.numberOfLines = 0;

label.lineBreakMode = UILineBreakModeWordWrap;

label.textColor = kAlertViewMessageTextColor;

label.backgroundColor = [UIColor clearColor];

label.textAlignment = UITextAlignmentCenter;

label.shadowColor = kAlertViewMessageShadowColor;

label.shadowOffset = kAlertViewMessageShadowOffset;

}

}

if ([v isKindOfClass:NSClassFromString(@"UIAlertButton")]) {//替换取消等按钮的样式

UIButton *button = (UIButton *)v;

UIImage *image = nil;

if (button.tag == 1) {

image = [UIImage imageNamed:[NSString stringWithFormat:@"alert-%@-button.png", @"gray"]];

}else{

image = [UIImage imageNamed:[NSString stringWithFormat:@"alert-%@-button.png", @"black"]];

}

image = [image stretchableImageWithLeftCapWidth:(int)(image.size.width+1)>>1 topCapHeight:0];

button.titleLabel.font = kAlertViewButtonFont;

button.titleLabel.minimumFontSize = 10;

button.titleLabel.textAlignment = UITextAlignmentCenter;

button.titleLabel.shadowOffset = kAlertViewButtonShadowOffset;

button.backgroundColor = [UIColor clearColor];

[button setBackgroundImage:image forState:UIControlStateNormal];

[button setTitleColor:kAlertViewButtonTextColorforState:UIControlStateNormal];

[button setTitleShadowColor:kAlertViewButtonShadowColorforState:UIControlStateNormal];

}

}

二、更改AlertView的弹出位置及其宽度

  在代理方法

- (void)willPresentAlertView:(UIAlertView *)alertView

中修改。

自定义AlertView的方法和改变Alert的弹出位置以及其宽度的更多相关文章

  1. Selenium(八):其他操作元素的方法、冻结界面、弹出对话框、开发技巧

    1. 其他操作元素的方法 之前我们对web元素做的操作主要是:选择元素,然后点击元素或者输入字符串. 还有没有其他的操作了呢?有. 比如:比如鼠标右键点击.双击.移动鼠标到某个元素.鼠标拖拽等. 这些 ...

  2. 经验总结:WebBrowser自动点击弹出提示框alert、弹出对话框confirm、屏蔽弹出框、屏蔽弹出脚本错误的解决办法

    经验总结:WebBrowser自动点击弹出提示框alert.弹出对话框confirm.屏蔽弹出框.屏蔽弹出脚本错误的解决办法 网上有好多解决方法,可是不一定好使,本人经过多次试验,针对WebBrows ...

  3. 纯手画WinForm的Alert提示弹出框

    纯手画WinForm的Alert弹框 一.窗体设置 设置以下属性: 属性名 属性值 说明 AutoScaleMode None 确定屏幕分辨率或字体更改时窗体如何缩放 BackColor 103, 1 ...

  4. 吐血bug-- 多个input框接连blur事件导致alert接连弹出

    本来今天想记录一下Flow在vue源码中的应用,结果临时触发了个bug... bug描述: elementUi + Vue 技术 需求:一个表格中有至少两条数据,每条数据都有input框,在失去焦点后 ...

  5. mui popover 自定义 弹出位置 显示 隐藏

    mui popover 一.要显示.隐藏弹出菜单插件,mui推荐使用锚点方式. 1.页面顶部导航栏.底部工具栏固定位置 <header class="mui-bar mui-bar-n ...

  6. form WebBrowser自动点击弹出提示框alert、弹出对话框confirm、屏蔽弹出框、屏蔽弹出脚本错误的解决办法

    针对WebBrowser控件中自动点击弹出框及禁用脚本提示问题得到如下几种实际情况的解决办法,绝对管用. 1.屏蔽弹出错误脚本 将WebBrowser控件ScriptErrorsSuppressed设 ...

  7. 从service弹出系统级自定义提示框,可在任意页面弹出

    添加权限 <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> // 显示 ...

  8. 自定义Toast解决快速点击时重复弹出,排队无止尽

    解决办法:自定义MyToast类: public class MyToast { /** 之前显示的内容 */ private static String oldMsg ; /** Toast对象 * ...

  9. Bootstrap方法为页面添加一个弹出框

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

随机推荐

  1. 洛谷P2687 [USACO4.3]逢低吸纳Buy Low, Buy Lower

    P2687 [USACO4.3]逢低吸纳Buy Low, Buy Lower 题目描述 “逢低吸纳”是炒股的一条成功秘诀.如果你想成为一个成功的投资者,就要遵守这条秘诀: "逢低吸纳,越低越 ...

  2. 剑指Offer的学习笔记(C#篇)-- 二叉树的深度(详讲递归)

    题目描述 输入一棵二叉树,求该树的深度.从根结点到叶结点依次经过的结点(含根.叶结点)形成树的一条路径,最长路径的长度为树的深度. 一 . 思维发散 借助这个题目,我想用一个更好理解的方法说一说递归. ...

  3. JAVA编写的断点续传小程序

    上了一周的课,今天终于可以休息了,太棒了,今天闲着无聊使用java语言写了一个断点续传的小程序来分享给大家, 首先要下载个用于网络请求的框架:我这里给出地址,是用的Apache的HttpClient: ...

  4. [题解](双向bfs)hdu_3085_Nightmare Ⅱ

    发现直接搜索比较麻烦,但是要同时两个人一起走容易想到双向bfs,比较普通, 在判断是否碰到ghost时只要比较两点的曼哈顿距离大小和step*2(即ghost扩散的距离)即可,仔细思考也是可以想到的 ...

  5. NOI2015品酒大会 后缀数组

    自己尝试敲后缀数组,发现难看(tiao)的不行,于是抄了板子 考虑建出hei以后转化出的问题: 对于一个数组中权值大于等于k的连续部分,求取两个数的方案数和两数积的最大值 (好气啊,可以有负数) 把询 ...

  6. 从两个不同的ServiceProvider说起

    从两个不同的ServiceProvider说起 我们一致在说 ASP.NET Core广泛地使用到了依赖注入,通过前面两个系列的介绍,相信读者朋友已经体会到了这一点.由于前面两章已经涵盖了依赖注入在管 ...

  7. block size大小

    1.用tune2fs查看block size大小: 1 2 tune2fs -l /dev/sda1 |grep "Block size" Block size: 1024 2.用 ...

  8. F. Coprime Subsequences 莫比乌斯反演

    http://codeforces.com/contest/803/problem/F 这题正面做了一发dp dp[j]表示产生gcd = j的时候的方案总数. 然后稳稳地超时. 考虑容斥. 总答案数 ...

  9. (转)linux实战考试题:批量创建用户和密码-看看你会么?

    老男孩教育第五关实战考试题:批量创建10个用户stu01-stu10,并且设置随机8位密码,要求不能用shell的循环(例如:for,while等),只能用linux命令及管道实现. 方法1:[roo ...

  10. springMVC数据校验与单文件上传

    spring表单标签:    <fr:from/> 渲染表单元素    <fr:input/>输入框组件    <fr:password/>密码框组件标签    & ...