首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在iOS8中设置UIAlertController的高度和宽度

在iOS 8中,UIAlertController 是用来展示警告、确认或其他简单对话框的类。与之前的 UIAlertViewUIActionSheet 不同,UIAlertController 提供了更加灵活和现代的界面。然而,需要注意的是,UIAlertController 并不支持直接设置其高度和宽度。它的布局是由系统自动管理的,以确保在不同设备上都能保持一致的外观和体验。

不过,你可以通过自定义的方式来实现类似的效果。以下是一个示例代码,展示如何创建一个自定义的 UIAlertController,并尝试通过添加子视图来间接影响其显示尺寸:

代码语言:txt
复制
import UIKit

class CustomAlertViewController: UIAlertController {
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 设置标题和消息
        self.title = "Custom Alert"
        self.message = "This is a custom alert with adjusted size."
        
        // 添加按钮
        let okAction = UIAlertAction(title: "OK", style: .default, handler: nil)
        self.addAction(okAction)
        
        // 尝试添加一个自定义视图来影响尺寸
        let customView = UIView(frame: CGRect(x: 0, y: 0, width: 300, height: 200))
        customView.backgroundColor = .white
        customView.layer.cornerRadius = 10
        customView.layer.masksToBounds = true
        
        // 添加一个标签到自定义视图
        let label = UILabel()
        label.text = "Custom View Inside Alert"
        label.textAlignment = .center
        customView.addSubview(label)
        
        // 将自定义视图作为子视图添加到 UIAlertController 的 view 上
        self.view.addSubview(customView)
        
        // 设置自定义视图的约束
        customView.translatesAutoresizingMaskIntoConstraints = false
        NSLayoutConstraint.activate([
            customView.widthAnchor.constraint(equalToConstant: 300),
            customView.heightAnchor.constraint(equalToConstant: 200),
            customView.centerXAnchor.constraint(equalTo: self.view.centerXAnchor),
            customView.centerYAnchor.constraint(equalTo: self.view.centerYAnchor)
        ])
    }
}

// 使用自定义的 UIAlertController
let customAlert = CustomAlertViewController()
present(customAlert, animated: true, completion: nil)

解释

  1. 自定义 UIAlertController 子类:创建一个 CustomAlertViewController 类继承自 UIAlertController
  2. 设置标题和消息:在 viewDidLoad 方法中设置标题和消息。
  3. 添加按钮:创建一个 UIAlertAction 并添加到 UIAlertController 中。
  4. 自定义视图:创建一个自定义视图,并将其添加到 UIAlertControllerview 上。
  5. 设置约束:使用 Auto Layout 设置自定义视图的宽度和高度,并使其居中显示。

注意事项

  • 这种方法并不是直接设置 UIAlertController 的高度和宽度,而是通过添加自定义视图来间接影响其显示尺寸。
  • 由于 UIAlertController 的布局是由系统管理的,这种方法可能在不同的设备和屏幕尺寸上表现不一致。
  • 自定义视图的内容和样式可以根据需要进行调整。

参考链接

通过这种方式,你可以在 iOS 8 中实现一个类似自定义尺寸的警告对话框。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何在onCreate中获取View的高度和宽度

如何在onCreate中获取View的高度和宽度 在开发过程中经常需要获取到View的宽和高,可以通过View.getWidth()和View.getHeight()来得到宽高。...然而新手们经常在onCreate方法中直接调用上面两个方法得到的值是0! 这是为什么呢? 因为View绘制是通过两个遍历来完成的,一个measure过程,一个layout过程。...只有经过“测量”和“布局”之后,View才能正确地完成绘制。而这一切是发生在onCreate方法之后的。...所以在onCreate中直接使用View.getWidth()和View.getHeight()是无法得到正确的值的。 那应该怎么onCreate中获取View的宽高呢?...开发者可以通过View.post()方法来获取到View的宽高,该方法传递一个Runnable参数,然后将其添加到消息队列中,最后在UI线程中执行。

5.3K20
  • UIAlertView、UIActionSheet、UIAlertController使用

    UIAlertControllerStyleActionSheet和UIAlertControllerStyleAlert,如果UIAlertController对象的preferredStyle属性取值为...UIAlertControllerStyleActionSheet,那么其作用和效果就相当于iOS8中被废弃的UIActionSheet。...想反,如果UIAlertController对象的preferredStyle属性取值为UIAlertControllerStyleAlert,那么其作用和效果就相当于iOS8中被废弃的UIAlertView...我们知道,使用UIAlertView和UIActionSheet需要遵守对应的协议并实现相应的方法,因为UIAlertView和UIActionSheet采用delegate的方式处理事件。...而UIAlertController则采用灵活的block方式处理事件。所以使用UIAlertController不用再遵守某个协议,只需将响应事件的代码写在block中即可。

    6.3K30

    iOS8统一的系统提示控件——UIAlertController

    iOS8统一的系统提示控件——UIAlertController 一、引言         相信在iOS开发中,大家对UIAlertView和UIActionSheet一定不陌生,这两个控件在UI设计中发挥了很大的作用...在iOS8之后,系统吸引了UIAlertController这个类,整理了UIAlertView和UIActionSheet这两个控件,在iOS中,如果你扔使用UIAlertView和UIActionSheet...,系统只是会提示你使用新的方法,iOS9中,这两个类被完全弃用,但这并不说明旧的代码将不能使用,旧的代码依然可以工作很好,但是会存在隐患,UIAlertController,不仅系统推荐,使用更加方便,...,可以使某个按钮更加突出,只能设置已经在actions数组中的AkertAction,会使设置的按钮更加显眼,如下: ?...,虽然也可以添加textField,但是定制化能力非常差,这个新的方法中有一个configurationHandler代码块,可以将textField的相关设置代码放入这个代码块中,并且这个方法添加的textField

    64410

    升级IOS8游戏上传自定义头像功能失效的问题

    第一个问题:点击后无响应 原因是 UIActionSheet 的showInView方法的参数上,之前设置的是self.view.window (NSInvalidArgumentException,...原因是UIActionSheet在ios8中已经被弃用了(点击查看详情>>),使用UIAlertController进行替代,这里有两篇文件介绍它: UIAlertController in IOS8>...中午吃过饭,再看那个crash的地方 cocos2d-x中的CCDictionary.cpp  objectForKey方法的断点挂掉了 ?...日志显示其实游戏已经启动了,都开始请求CDN上的资源了,只是界面还停留在重启那个界面,但崩溃的点却挂在了CCDictionary.cpp中。...作为手游开发人员,要学习和掌握的知识的比较广:C++底子要用吧,Lua至少能用的很顺手吧,Android要比较熟悉吧(不然怎么接SDK,修一些bug呢),IOS也是一样,不然就像我经常面临的问题一样,各平台上的键盘

    68820

    iOS-UI控件之UITableView(三)- 自定义不等高的cell

    Storyboard_不等高 对比自定义等高cell,需要几个额外的步骤(iOS8开始才支持) 添加子控件和contentView之间的间距约束 设置tableViewCell的真实行高和估算行高...// 告诉tableView所有cell的真实高度是自动计算(根据设置的约束来计算) self.tableView.rowHeight = UITableViewAutomaticDimension...如果要支持iOS8之前 如果cell内部有自动换行的label,需要设置preferredMaxLayoutWidth属性 - (void)awakeFromNib { // 手动设置文字的最大宽度...(目的是:让label知道自己文字的最大宽度,进而能够计算出自己的frame) self.text_label.preferredMaxLayoutWidth = [UIScreen mainScreen...].bounds.size.width - 20; } 设置tableView的cell估算高度 // 告诉tableView所有cell的估算高度(设置了估算高度,就可以减少tableView:heightForRowAtIndexPath

    881100

    iOS 设置tableViewCell的高度

    前言 iOS tableView的cell在显示之前必须获取cell的高度,如果cell的高度都一样,统一设置就行了,但是cell的高度不统一的话就要一一设置了,在ios8之前,需要自己手动去计算,iOS...之后就方便多了 iOS8以下(不包含iOS8) 定义全局变量 //用于缓存计算高度的cell var offscreenCells:[String:AnyObject] = [:]; 保存计算高度的Cell...view以下约束 宽度和高度(假设为宽100 高100) 水平居中 距离顶部距离(=10) 距离底部距离(>=10) 这样设置之后UITableViewAutomaticDimension就可以算出该cell...(Priority)就起作用了,一般我们添加约束优先级默认都是1000,系统自己添加的这个约束也是1000,我们只要降低我们自己view高度约束的优先级就行了,设置高度的约束优先级为750,这样当系统估算后添加估算高度后...,我们自己设置的高度就不起作用了。

    2.4K30

    iOS---iPad开发及iPad特有的特技

    1.在控制器中得到设备的旋转方向 在 iOS8及以后,屏幕就只有旋转后屏幕尺寸之分,不再是过期的旋转方向。...Dock的宽度和高度 // 获取屏幕旋转动画执行的时间 CGFloat duration = [coordinator transitionDuration]; [UIView...animateWithDuration:duration animations:^{ }]; } 2.iPad中Modal弹出控制器的方式和样式 Modal常见有4种呈现样式 控制器属性 modalPresentationStyle...UIModalPresentationFullScreen :全屏显示(默认) UIModalPresentationPageSheet 宽度:竖屏时的宽度(768) 高度:当前屏幕的高度(填充整个高度...设置popView的大小(默认控制器有多大就显示多大)(120, 44 * 3) UIPopoverController的方法popoverContentSize 内容控制器中设置的方法 self.preferredContentSize

    2.6K70

    ios学习7_iPhone屏幕尺寸、分辨率及适配

    (s)时,在逻辑上宽度不变高度稍高,之前旧的素材和布局通过AutoresizingFlexible简单适配即可运行得很好,但由于高宽比增大,上下两端出现黑粗边(典型如LaunchImage)。...(2)按高度适配 在同样的宽度下,iPhone4(s)的屏高比iPhone5(s)低,若纵向排版紧张,可以iPhone5(s)为基准,按高度适配: fitScreenHeight= height...(3)按字体适配 另外,iPhone的【设置】【通用】【辅助功能】中可以设置调节【更大字体】,APP也可以按字号适配: 例如适配表视图(UITableView:UIScrollView...注意限定控件元素内容区域宽度以及间距,并设置适当的LineBreakMode。表视图支持上下滑动,因此纵向上的表格行高和内容区域高度可按字号缩放。...苹果在WWDC2012 iOS6中就已提出了Auto Layout的概念,即使用约束条件来定义视图的位置和尺寸,以适应不同尺寸和分辨率的屏幕。

    2.8K20

    ios学习7_iPhone屏幕尺寸、分辨率及适配

    (s)时,在逻辑上宽度不变高度稍高,之前旧的素材和布局通过AutoresizingFlexible简单适配即可运行得很好,但由于高宽比增大,上下两端出现黑粗边(典型如LaunchImage)。...(2)按高度适配 在同样的宽度下,iPhone4(s)的屏高比iPhone5(s)低,若纵向排版紧张,可以iPhone5(s)为基准,按高度适配: fitScreenHeight= height...(3)按字体适配 另外,iPhone的【设置】【通用】【辅助功能】中可以设置调节【更大字体】,APP也可以按字号适配: 例如适配表视图(UITableView:UIScrollView...注意限定控件元素内容区域宽度以及间距,并设置适当的LineBreakMode。表视图支持上下滑动,因此纵向上的表格行高和内容区域高度可按字号缩放。...苹果在WWDC2012 iOS6中就已提出了Auto Layout的概念,即使用约束条件来定义视图的位置和尺寸,以适应不同尺寸和分辨率的屏幕。

    93450

    WKWebView 那些坑

    作者:林泽水 导语 WKWebView是苹果在WWDC 2014上推出的新一代webView组件,用以替代UIKit中笨重难用、内存泄漏的UIWebView, 拥有60fps滚动刷新率、和safari...实践发现WKWebView实例其实也会将Cookie存储于NSHTTPCookieStorage中,但存储时机有延迟,在iOS8上,当页面跳转的时候,当前页面的Cookie会写入NSHTTPCookieStorage...前,在request header中设置Cookie, 解决首个请求Cookie带不上的问题; WKWebView * webView = [WKWebView new]; NSMutableURLRequest...,最后将加载结果返回WKWebView; 5、WKWebView 页面样式问题 在WKWebView适配过程中,我们发现部分H5页面元素位置向下偏移或被拉伸变形,追踪后发现主要是H5页面高度值异常导致:...同学通过获取window.innerHeight来设置页面高度,导致页面整体被拉伸。

    17.5K21

    【死磕iOS】处理不等高TableViewCell的小花招

    Y值并返回 */ - (CGFloat)cellHeight { // 强制布局之前,需要先手动设置下cell的真实宽度,以便于准确计算 CGRect...return CGRectGetMaxY(self.bottomCub.frame); } @end 第四步:在代理方法中设置Cell高度 *注意:计算Cell高度的过程...View设置约束 - 除了要定高、定宽、左上角粘着Label外,还要设置bottom距contentView的bottom间距为固定值,如0 第三步:一定要注意 - 不能实现heightForRow代理方法...那么,在哪里能拿到Cell和Cell的高度呢? - 当然是CellForRow代理方法中啦! 但是,在CellForRow中拿到Cell高度后,如何传递给heightForRow代理方法呢?...,这意味着,我们在cellForRow方法中拿到cell高度之前,就需要设置heightForRow...怎么办?

    1.3K80

    iPhone屏幕尺寸、分辨率及适配

    )时,在逻辑上宽度不变高度稍高,之前旧的素材和布局通过AutoresizingFlexible简单适配即可运行得很好,但由于高宽比增大,上下两端出现黑粗边(典型如LaunchImage)。...(2)按高度适配 在同样的宽度下,iPhone4(s)的屏高比iPhone5(s)低,若纵向排版紧张,可以iPhone5(s)为基准,按高度适配: fitScreenHeight= height...(3)按字体适配 另外,iPhone的【设置】【通用】【辅助功能】中可以设置调节【更大字体】,APP也可以按字号适配: 例如适配表视图(UITableView:UIScrollView...注意限定控件元素内容区域宽度以及间距,并设置适当的LineBreakMode。表视图支持上下滑动,因此纵向上的表格行高和内容区域高度可按字号缩放。...具体编程时,调用 sizeWithFont/boundingRectWithSize 可动态计算每行 label 的自然宽度,一般title都会超过约束宽度,因此需设置 lineBreakMode指定Wrapping

    6.1K20

    iOS开发常用之 HUD 弹窗

    MMProgressHUD - 设置HUD出现和消失的方式(包括上下,左右,淡入淡出,放大缩小等等),设置HUD的内容(可以在HUD中加入帧动画,动态图片等等),设置HUD出现时的底部覆盖层颜色,等等...DQAlertView - 扁平化的样式不错。 HHAlertView - 一个简单的alertview有三种样式,有成功,失败,和警告三种样式,支持代表和阻止两种回调。...PSTAlertController - 兼容iOS7的XXAlertController,接口跟UIAlertController一模一样,做到高版本通用。...GSAlert.swfit - 苹果在iOS8推出了全新的UIAlertController,旧的UIAlertView和UIActionSheet渐渐被废弃,但如果你仍然支持iOS7系统,你将不得不写两套代码...PMAlertController.Swift - 可定制弹簧组件替代版本不可定制的UIAlertController。

    4.3K20

    网站自适应布局为什么我要抛弃rem,改用vw?

    简单介绍下rem布局方案 rem是css中的长度单位,1rem=根元素html的font-size值。...若使用vw布局,就不需要再像rem那样,在js中去动态设置根元素的font-size了,sass中只需要使用这个函数做转换即可 //以iphone7尺寸@2x 750像素宽的视觉稿为例 @function...百分比%是根据父元素宽度或者高度进行计算,而vw vh固定按照viewport来计算,不会受父元素宽高度影响。...100vw包括了页面滚动条宽度(页面滚动条属于viewport范围内,100vw当然包括了页面滚动条宽度)。但把body或者html设置为width:100%时,是不包括页面滚动条的宽度的。...我们来看看vw和rem的兼容性。  ? ? 相较之下,vw单位兼容性比rem稍差,ios8、安卓4.4及以上才完全支持。这也是为什么之前rem布局一直更流行的原因。

    3.5K10

    六天完成一个简单iOS App - 第四天

    精华页面的搭建 精华页面中全部界面的显示 日期的处理 热门评论的显示和处理 精华页面的搭建 精华页面分为全部、视频、声音、图片、段子五个界面,五个界面可以通过点击导航栏下面的titleView进行页面的切换...精华页面中全部界面的显示 自定义cell的分析,因为全部页面中有4种cell,4种cell顶部和底部都是一样的唯有中间部位不一样。这里自定义cell有两种方案。...UIAlertController的简单使用 iOS8 之后UIAlertController的使用非常简单,右上角更多按钮点击事件 - (IBAction)moreClick { UIAlertController...方法调用非常频繁,而NSDateFormatter和NSCalendar对象没有必要这么频繁的创建,可以使用懒加载,也可以再initialize方法中创建,initialize方法只在类加载时调用一次。...如果返回的是别的区域的时间,也可以通过NSDateFormatter的locale来设置语言区域 // 设置语言区域(因为这种时间是欧美常用时间) fmt.locale = [[NSLocale alloc

    1.4K70

    【IOS开发基础系列】UIAlertController专题

    2 UIAlertController         在iOS 8中,UIAlertController在功能上是和UIAlertView以及UIActionSheet相同的,UIAlertController...举个栗子吧,要重新建立原来的登录和密码样式对话框,我们可以向其中添加两个文本框,然后用合适的占位符来配置它们,最后将密码输入框设置使用安全文本输入。     ...和对话框不同,上拉菜单的展示形式和设备大小有关。在iPhone上(紧缩宽度),上拉菜单从屏幕底部升起。在iPad上(常规宽度),上拉菜单以弹出框的形式展现。         ...在iOS 8中我们不再需要小心翼翼地计算出弹出框的大小,UIAlertController将会根据设备大小自适应弹出框的大小。并且在iPhone或者紧缩宽度的设备中它将会返回nil值。...原先的UIAlertView和UIActionSheet类仍然可以在iOS 8中工作得很好,所以没有必要急于更换代码(要知道本文用到的许多函数尽在iOS 8中支持)。

    60630

    iOS学习——UIAlertController详解

    在两者的API中都建议用UIAlertController替代,并通过设置不同的类型风格来选择是原先的UIAlertView或UIActionSheet的形式。   ...UIAlertController是在iOS8.0中出现的一种统一的提示风格的界面,代替原来的UIAlertView和UIActionSheet两种类别。...上添加文本框   上面我们讲到了如何在UIAlertController提示器上添加按钮,但是有时候,我们需要在提示器上添加一个或多个文本框让用户填写一些信息,在UIAlertController中也提供了一个方法直接可以在提示器上添加文本框...主要的方法有两种: 利用第三方控件 利用KVC方法进行自定义修改 2.1 利用第三方控件进行UIAlertController属性的自定义 现在Github上有着众多的Alert控件(如SCLAlertView...如果要自定义标题和内容,可以通过NSAttributedString把字体和颜色设置好,然后在通过KVC的方法进行设置,就可以了。

    3.4K170

    AutoLayout简洁之道

    上面添加的约束为什么会成功呢。 相对于父试图上对其和左对齐就确定了坐标。 相对齐父试图左对齐和右对齐就确定了高度 设置了高度就确定了高度。 从而确定了这个试图的FRAME。...我们虽然设置了左右对齐设置了宽度 顶部对齐和左对齐确定了为了但是没有设置高度 再次选择pan ? QQ20151126-4.png ?...QQ20151126-3.png 现在我希望这个广告条是我们宽度的一半 确定宽度和位置还是和之前的一样。但是现在高度不确定了。 我们选中父试图和广告条。 ?...我们设置试图的高度等于父试图高度。Mutiplier设置位0.5。 我们以为试图的高度位宽度的一半也就是0.5。我们试图的宽度等于父试图的宽度。因为我们参考父试图设置。...我们没办法参考自己的高度和宽度的,因为还没确定下来具体的值。 未完待续

    57020

    常用开发技巧系列(五)

    前言 ---- 前面刚发了这个技巧总结系列的第四篇文章,这篇文章总结的一些日常开发中的技巧或更偏向于Cocos2d方向,因为最近在游戏中有原生的一个客服系统需要加进来,就涉及到一个游戏和原生界面的交互以及各种各样的...前面说了,这个解决起来很简单,但是我们不明不白的设置这东西就是属于稀里糊涂了: 二: 横屏切换竖屏 ---- 我们一般的游戏都是横屏的,当然也有竖屏的,在日常的需求中很有可能就涉及到游戏和原生界面的交互...我们再这里也总结一下在iOS应用中决定键盘的方向因素,在不同iOS版本中是不一样的。...iOS8: 键盘方向是根据一个特定的window决定,打印[UIApplication sharedApplication].windows,最少有两个,第一个为UIWindow,是程序主要的...UIRemoteKeyboardWindow成为决定键盘方向的window了,而UITextEffectsWindow控制了键盘顶部栏的方向,如下如: iOS10: 和iOS9类似,但是,如果要强制旋转键盘的话

    1.5K41
    领券