Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >自定义UI视图更改框架大小

自定义UI视图更改框架大小
EN

Stack Overflow用户
提问于 2011-11-02 12:16:05
回答 3查看 10.2K关注 0票数 2

我有一个自定义的UIView,它可以在draw rect方法中绘制图像。我的问题是,当我分配对象时,UIView希望我使用initWithFrame。视图的边框需要与图像的大小和宽度相同。问题是,直到我创建视图的drawRect方法时,我才能获得图像的大小和宽度。在drawRect视图中,将no视图的边框更改为图像尺寸似乎没有任何效果。所以我想做的是这样的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MyCustomView *myCustomView = [[MyCustomView alloc] initWithFrame: CGrectMake(0,0,0,0)];

然后在MyCustomView的drawRect方法中,我想以某种方式将视图的边框更改为我正在创建的图像的边框大小。

我如何获得我想要的结果?不,在初始化我的自定义视图之前创建图像并将尺寸尺寸放入initWithFrame中是不可行的。

这是我在视图的drawRect方法中的当前代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"%@",self.imgName]];
CGSize imgSize = [image size];
CGRect newrect = CGRectMake(self.frame.origin.x, self.frame.origin.y, imgSize.width, imgSize.height);
self.frame = newrect; //This does nothing!!
CGRect imgRect = CGRectMake(0, 0, imgSize.width, imgSize.height);
[image drawInRect:imgRect];
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-02 12:34:27

如果你看一下setFrame的文档,它会说:

此方法在设置框架矩形时,在其superview的坐标系内重新定位接收器并调整其大小。它既不重新显示接收器,也不将其标记为需要显示。您必须使用display或setNeedsDisplay:自己完成此操作。

它不会重新显示-通常是在设置了调用setNeedsDisplay的帧之后。但是,这突出了你的鸡和蛋的问题。setNeedsDisplay会导致drawrect触发。

此外,正如Sulthan指出的那样,做一些繁重的事情,比如在drawRect中加载图像,并不是一个好主意。它很重,像drawRect这样的东西在调整大小时会被重复调用。

我要么创建一个init模式(即使您说不是一个选项),要么创建一个属性来设置图像并在此时加载图像。

票数 5
EN

Stack Overflow用户

发布于 2011-11-02 12:28:27

从drawRect内部更改帧是...这不是个好主意。你认为系统如何在当前绘制的同时调整它的大小?

此外,从drawRect内部加载图像(运行缓慢)(可以经常调用)也不是一个很好的主意。您应该在获取文件名并更改图幅时加载图像。可能还会用到一些动画。用户不会期望视图在没有动画的情况下改变其大小。

和:

和no,在初始化我的自定义视图之前创建图像并将尺寸尺寸放入initWithFrame中是不可行的。

我不能想象任何情况下,这不是一个选择。这仅仅是关于你如何架构你的代码。

票数 3
EN

Stack Overflow用户

发布于 2011-11-02 12:52:11

在初始化我的自定义视图之前创建图像,并将尺寸尺寸放入initWithFrame中,这不是一个选项。

我不明白为什么这不是一个选择,但好吧。您的视图中有一个属性,self.imgName。当这个设置完成时(必须在图像绘制之前),你应该得到图像,计算出它的大小,并在那个点设置你的框架。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7980144

复制
相关文章
MongoDB更改oplog大小
在生产环境新增secondary:10.9.197.6:27017 ,数据量140G,却同步了一天还未追上数据,通过如下方式查看同步情况:
星哥玩云
2022/08/17
1.6K0
MongoDB更改oplog大小
mac更改launchpad图标大小
launchpad #0 GitHub None #2 环境 Mac #3 需求分析 launchpad的图标太大,需要更改成小的 #4 开始 打开终端 输入命令 defaults write com.apple.dock springboard-columns int 8 # 一行8个 重启launchpad killall Dock
Autooooooo
2020/11/09
1.4K0
HPUX调整LUN大小识别更改
磁盘阵列通常允许调整 LUN 的大小,如果增加 LUN 的大小,请执行以下步骤将附加空间合并到卷组中: 1、按照阵列说明增加 LUN 的大小。 2、运行 vgmodify 检测任何物理卷大小更改。还将报告卷组能否使用所有空间。 3、如果 vgmodify 报告,每个物理卷的最大物理盘区数 (max_pe) 太小,无法容纳新增的空     间,请使用带 -t 和 -n 选项的 vgmodify 确定 max_pe 的新值,如“修改卷组参数” 4、按照新的设置运行带 -r 选项的 vgmodify 检查这些值。 5、停用卷组。 6、提交 max_pe 的任何新值,运行不带 -r 选项的 vgmodify 更新物理卷信息。 7、激活卷组。运行 vgdisplay 和 pvdisplay 命令验证增加的空间是否可用。
星哥玩云
2022/06/30
1.5K0
Android 各视图的大小
前言 常用高度 名称 值 状态栏高度 25dp ActionBar高度 48dp logo 名称 值 RATIO drawable-xxxhdpi 192×192 4x drawable-xxhdpi 144×144 3x drawable-xhdpi 96×96 2x drawable-hdpi 72×72 1.5x drawable-mdpi 48×48 1x 应用商店 512×512 ios常用的尺寸 ios常用的尺寸
码客说
2019/10/22
6620
改变视图的位置和大小
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/53068421
用户1451823
2018/09/13
1.2K0
更改Android Studio 的log的大小
在File -> Setting 中, 有Override console cycle buffer size可以修改log大小. 建议修改后面加两个0, 100M.
望天
2022/01/08
1.7K0
更改Android Studio 的log的大小
更改iis上传文件的默认大小
第一步:修改IIS设置,允许直接编辑配置数据库。先打开,Internet信息服务 第二步:先在服务里关闭iis admin service服务,找到windows\system32\inetsrv\下的metabase.xml, 打开,找到ASPMaxRequestEntityAllowed 把他修改为需要的值,默认为204800,即200K,如把它修改为102400000(100M)。 然后重启iis admin service服务。 办法二: 新建一个文本文件,内容如下: set providerObj=GetObject(“winmgmts:/root/MicrosoftIISv2”) set vdirObj=providerObj.get(“IIsWebVirtualDirSetting=’W3SVC/1/ROOT'”) WScript.Echo “Before: ” & vdirObj.AspMaxRequestEntityAllowed vdirObj.AspMaxRequestEntityAllowed=102400000 vdirObj.Put_() WScript.Echo “Now: ” & vdirObj.AspMaxRequestEntityAllowed
全栈程序员站长
2022/07/05
2.5K0
更改文字、图片和视频大小(缩放)
您可以更改所访问网页中所有内容(包括文字、图片和视频)的大小,也可以仅更改字体大小。
全栈程序员站长
2022/07/11
2.2K0
更改文字、图片和视频大小(缩放)
框架、组件库、UI框架、UI库
事情是这样的,我和小伙伴在沟通一些问题的时候,她将uview、antd等称之为框架,而我内心想这些不是组件吗?瞬间我质疑了一下自己,回头翻看了一些相应的官网。
CODER-V
2023/03/04
8700
【说站】PDF如何更改页面尺寸大小,QI插件改变PDF页面大小
2、Quite Imposing plus3 PDF拼版插件中文汉化破解版(Acrobat Pro DC的QI插件)
很酷的站长
2022/11/24
2.8K0
【说站】PDF如何更改页面尺寸大小,QI插件改变PDF页面大小
vue UI 框架
(1)Element 饿了么 vue 2.0后台UI框架 (Star:18382)
小蔚
2019/09/11
1.4K0
pycharm修改镜像源_pycharm更改字体大小
1.国内常用的镜像源 清华:https://pypi.tuna.tsinghua.edu.cn/simple 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/ 2.pip下载时例子之如何使用这些镜像: pip install pygame -i https://pypi.tuna.tsinghua.edu.cn/simple 在文件后加-i 镜像地址 如何在pycharm中修改自己的镜像源:
全栈程序员站长
2022/09/27
1.4K0
pycharm修改镜像源_pycharm更改字体大小
SpringMVC自定义视图(11)
@Component public class HelloView implements View { @Override public String getContentType(
桑鱼
2020/03/18
4150
angular-ui-router 多视图views
UI Router 中有三种方式激活一个路由: (1)$state.go():优先级较高的便利方式 (2)ui-sref:点击包含此指令跳转 (3)url:url导航
奋飛
2019/08/15
1.1K0
VM虚拟机更改硬盘大小之扩大篇
新装的虚拟机空间大小选择的是20G,后来觉得不够用,准备扩大硬盘空间,这里有两种方法,一种是编辑虚拟机配置文件直接添加一块硬盘,再挂载
三杯水Plus
2018/11/14
6K0
springmvc之自定义视图
在springmvc.xml中配置 <!-- 配置视图 BeanNameViewResolver 解析器: 使用视图的名字来解析视图 --> <!-- 通过 order 属性来定义视图解析器的优先级, order 值越小优先级越高 --> <bean class="org.springframework.web.servlet.view.BeanNameViewResolver"> <property name="order" value="100"></prope
西西嘛呦
2020/08/26
4810
springmvc之自定义视图
点击加载更多

相似问题

使用动画更改uiview的框架大小不会自动更改子视图的框架大小

20

自定义视图和更改子视图的大小

12

Android:自定义视图更改大小

24

Nuxtjs更改默认UI框架

13

更改框架的大小

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文