关于在storyboard拖按钮控件,手动设置代码不成功的问题

首先,在 storyboard 中拖拽一个按钮控件.设置好约束条件

然后把该控件作为属性,拖线到控制器当中

拿到控件属性后,可以在控制器当中用代码进行设置图片信息,我们以下载网络图片为例:

 1 - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
 2 {
 3
 4     // 1.开启异步线程
 5     dispatch_async(dispatch_get_global_queue(0, 0), ^{
 6
 7         // 1.1.获取网络图片 url 地址
 8         NSURL *url = [NSURL URLWithString:@"http://photo.scol.com.cn/hdp/img/attachement/jpg/site2/20101230/00219b7b06490e861d3d54.jpg"];
 9
10         // 1.2.根据 url 进行下载图片
11         NSData *data = [NSData dataWithContentsOfURL:url];
12
13         // 2.回到主线程设置下载好的图片
14         dispatch_sync(dispatch_get_main_queue(), ^{
15             // 2.1.设置按钮上面的图片
16             [self.btn setImage:[UIImage imageWithData:data] forState:UIControlStateNormal];
17         });
18     });
19 }

点击运行后,可见如下错误:

App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app‘s Info.plist file.

错误原因:在 ios9开始,苹果把 HTTP 协议默认为不安全协议,建议采用 HTTPS 协议.

解决方案:在项目的 nfo.plis 文件中,加入App Transport Security Settings,Type:Dictionary.在其子内容中加入:Allow Arbitrary Loads,Type:Boolean,Value 选择 YES

示例:

保存后,再次运行代码:

问题:发现运行效果仍旧不是我们想要的.此处我们想要见到的效果是,按钮上面应该展示为我们网络上面下载来的图片,而此处现在显示的结果为按钮颜色由黄色变为了蓝色.

原因:由于拖拽过来的控件,属性(Type)默认为:System,系统样式不能够通过代码直接设置图片.

解决:把 Type的值修改为:Custom 即可.再次运行程序

设置成功!

时间: 2024-10-29 19:05:37

关于在storyboard拖按钮控件,手动设置代码不成功的问题的相关文章

用 Blend 自动生成 自定义按钮控件 及设置触发器

1.构成控件 2.设置触发器 3.效果图 最后附上自动生成的代码 虽然有一句是似懂非懂 <ContentPresenter x:Name="contentPresenter" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBindi

[Xcode10 实际操作]三、视图控制器-(9)在Storyboard中使用标签和按钮控件

本文将演示标签和按钮在故事板中的应用. 在欢迎串口中,点击创建一个新的项目[Create a new Xcode project] [Single View App]->[Next]->[Product Name]:StoryboardProject ->[Create]->[Main Interface]:Main.storyboard 打开编辑故事板文件. 然后在根视图控制器中点击,以选择视图控制器的根视图. 接着点击库图标(项目地址右侧),打开控件列表. 需要往故事板中添加一

WinRT自定义控件第一 - 转盘按钮控件

之前的文章中,介绍了用WPF做一个转盘按钮控件,后来需要把这个控件移植到WinRT时,遇到了很大的问题,主要原因在于WPF和WinRT还是有很大不同的.这篇文章介绍了这个移植过程,由于2次实现的控件功能完全一样,文章主要关注点放在WPF与WinRT的不同上. 定义控件模板的XAML文件 在WinRT上的实现和WPF中实现一个很大的不同是,这个实现的TemplatedControl没有从ItemsControl继承,而是由Control继承手动添加了一些对集合属性的支持.不从ItemsContro

XCODE中使用Main.Storyboard拉入控件并实现事件(Swift语言)

如何在XCODE中的Main.Storyboard内拉入控件并实现一个简单的效果呢?本人由于刚接触Swift语言不久,对于IDE的操作还是很生疏,不懂了就在网上参考了网上前辈们的文章.以下我将演示如何用Swift语言配合Main.Storyboard演示一个小例子,对于新建一个SingleView Application在这里就不多说了. 创建好的应用程序已经自动创建好了一个和Main.Storyboard连接好的ViewController. 接下来我们在Main.Storyboard中的Vi

拖拽控件

public class MyGridLayout extends GridLayout { public MyGridLayout(Context context) { //super(context); this(context,null); } public MyGridLayout(Context context, AttributeSet attrs) { //super(context, attrs); this(context,attrs,-1); } public MyGridL

iOS学习笔记1--在xcode6以上的版本中不使用storyboard以及部分控件使用

首先建立一个iOS新工程,删除工程自动建立的main.storyboard以及xib文件,并且在info.plist上删除这两个选项 然后在项目配置中将maninterface设置为空,将launch screen file设置为空,新建一个view,命名为ViewController,因为此时已经有自动生成的类ViewController,所以不用新建类 建立新建xib文件和类的连接,将file own的class修改为ViewControll,修改完成之后才能进行下一步 连接新建的xib文件

自定义水晶按钮控件

namespace 自定义水晶按钮控件 { partial class Form1 { /// <summary> /// 必需的设计器变量. /// </summary> private System.ComponentModel.IContainer components = null; /// <summary> /// 清理所有正在使用的资源. /// </summary> /// <param name="disposing&quo

安卓开发_复选按钮控件(CheckBox)的简单使用

复选按钮 即可以选择若干个选项,与单选按钮不同的是,复选按钮的图标是方块,单选按钮是圆圈 复选按钮用CheckBox表示,CheckBox是Button的子类,支持使用Button的所有属性 一.由于复选框可以选中多项,所有为了确定用户是否选择了某一项,还需要为每一个选项添加setOnCheckedChangeListener事件监听 例如: 为id为like1的复选按钮添加状态改变事件监听,代码如下 1 final CheckBox like1 = (CheckBox)findViewById

ToggleButton开关状态按钮控件

ToggleButton开关状态按钮控件 一.简介 1. 2.ToggleButton类结构 父类是CompoundButton,引包的时候注意下 二.ToggleButton开关状态按钮控件使用方法 1.新建ToggleButton控件及对象 private ToggleButton toggleButton1; toggleButton1=(ToggleButton) findViewById(R.id.toggleButton1); 2.设置setOnCheckedChangeListen