Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UIButton子类内部的imageview.transform异常行为_Ios_Objective C_Iphone_Ios11_Ios11.2 - Fatal编程技术网

Ios UIButton子类内部的imageview.transform异常行为

Ios UIButton子类内部的imageview.transform异常行为,ios,objective-c,iphone,ios11,ios11.2,Ios,Objective C,Iphone,Ios11,Ios11.2,我制作了一个UIButton子类,并添加了一个IBInspectable属性,该属性在UIButton内部旋转imageView。在InterfaceBuilder中,一切似乎都工作得很好,但在运行时,它的行为却很奇怪 这是我的密码 我的按钮 @implementation MyButton -(void)awakeFromNib{ [super awakeFromNib]; [self setUpView]; } -(void)layoutSubviews{ [

我制作了一个
UIButton
子类,并添加了一个IBInspectable属性,该属性在
UIButton
内部旋转
imageView
。在InterfaceBuilder中,一切似乎都工作得很好,但在运行时,它的行为却很奇怪

这是我的密码

我的按钮

@implementation MyButton



-(void)awakeFromNib{
    [super awakeFromNib];
    [self setUpView];
}

-(void)layoutSubviews{
    [self setUpView];
    [super layoutSubviews];

}


-(void)prepareForInterfaceBuilder{
    [self setUpView];
}

-(void)setUpView{

    self.transform = CGAffineTransformMakeRotation(self.angle * M_PI / 180.0);
}

@end
它在Main.storyboard中如下所示

我在这里做的是我用了32颗我的纽扣让它看起来像牙齿

但在运行时,它看起来是这样的

我尝试的是:

  • 我已经评论过了

    self.imageView.transform = CGAffineTransformMakeRotation(self.angle * M_PI / 180.0);
    
  • 然后按钮得到适当的高度和宽度,但看起来不太好,因为它们需要旋转

  • 我已将代码更改为

     self.transform = CGAffineTransformMakeRotation(self.angle * M_PI / 180.0);
    
  • 而且它起到了一定的作用


    那么,我是否遗漏了什么,或者我做错了什么?

    我认为问题在于顺序。在setUpView之后调用LayoutSubView,会干扰UIImageView

    因此,尝试一个小的修复。使用此选项更改布局子视图方法

    -(void)layoutSubviews{
        [super layoutSubviews]; // Supper layoutSubviews should be on top
        [self setUpView]; // and then customization
    }
    
    现在你应该可以像这样变换你的图像视图了

    self.imageView.transform = CGAffineTransformMakeRotation(self.angle * M_PI / 180.0);
    

    谢谢,

    能否向上提供一个带有此问题的示例项目?此解决方案不是建设性的交换超级方法调用不会改变不正确的旋转维度:)请先尝试一下。您的代码似乎很好!您是否使用自动布局进行设计?可能是自动布局约束中的问题!是的,我使用自动布局,在故事板中,一切看起来都很好,没有约束问题。令人震惊的是,当我从Xcode调试视图时,所有视图都正确地重新对齐了。看起来很奇怪!无论如何,您可以尝试一下,清除所有约束,检查结果图像集aspectfit和clear constraint是什么,然后再次给它们适当的约束;这么多次在不同的地方?这是个坏习惯。