【问题标题】:UIButton initWithFrame:CGRectMake not working in Xcode 9.3UIButton initWithFrame:CGRectMake 在 Xcode 9.3 中不起作用
【发布时间】:2018-11-02 21:55:27
【问题描述】:

将 xcode 更新到 9.3,我的可编程按钮有问题

在 Xcode 8 中,我通过以下方式获得它并且效果很好

UIButton *btnSettingsButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 25, 25)];
[btnSettingsButton setBackgroundImage:[UIImage imageNamed:@"settings.png"] forState:UIControlStateNormal];
[btnSettingsButton addTarget:self action:@selector(setttingsDashboard:) forControlEvents:UIControlEventTouchUpInside];
[btnSettingsButton setShowsTouchWhenHighlighted:YES];
UIBarButtonItem *btnSettingsItem =[[UIBarButtonItem alloc] initWithCustomView:btnSettingsButton];

屏幕 Xcode 8 enter image description here

按钮的图像“settings.png”很好地显示了我,高度为 25,宽度为 25。

但是当我开始使用 xcode 9 时,它并没有采用 initWithFrame: CGRectMake 并且它变得更大。 "按钮图片的大小

屏幕 Xcode 9.3 enter image description here

我该如何解决这个问题?

【问题讨论】:

  • settings.png 大小是什么
  • settings.png 的大小为 50 X 50
  • 尽量做到 25x25,因为按钮已拉伸到它的大小
  • 并且按钮无法保持我给它的大小?并且图像保持按钮的大小?

标签: ios objective-c iphone uibutton xcode9.3


【解决方案1】:

您可以将图像大小调整为25x25

只需为图片设置内容模式

[[btnSettingsButton imageView] setContentMode: UIViewContentModeScaleAspectFit];
[btnSettingsButton setImage:[UIImage imageNamed:@"settings.png"] forState:UIControlStateNormal];

【讨论】:

    【解决方案2】:

    添加条形按钮项目是否有问题:-

    UIBarButtonItem *settingsButton=[[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"settings.png"] style:UIBarButtonItemStyleDone target:self action:@selector(setttingsDashboard:)];
    

    【讨论】:

      【解决方案3】:

      通过放置解决它

      [btnSettingsButton setImage:[UIImage imageNamed:@"settings.png"] forState:UIControlStateNormal];
      btnSettingsButton.imageView.contentMode = UIViewContentModeScaleAspectFit;
      btnSettingsButton.contentEdgeInsets = UIEdgeInsetsMake(10, 0, 10, -20); 
      

      【讨论】:

        【解决方案4】:

        当您调用initWithCustomView 时,您正在制作自定义栏按钮项。

        • 在 iOS 10 及之前的版本中,它具有固定大小(您正确地观察到,基于 frame)。

        • 但在 iOS 11 中,这种行为完全改变了:iOS 11 使用 自动布局 来获取自定义栏按钮项的大小。

        因此,您需要提供内部自动布局约束(例如高度和宽度约束)来决定自定义视图的大小。如果您给按钮设置 25 的高度限制和 25 的宽度限制,一切都会好起来的。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-05-15
          • 2012-11-08
          • 2015-10-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多