相关疑难解决方法(0)

使用自动布局时,如何调整CALayer的锚点?

注意:自问这个问题以来,事情已经发生了变化; 请看这里有一个很好的近期概述.


在自动布局之前,您可以通过存储框架,设置锚点和恢复框架来更改视图图层的锚点,而无需移动视图.

在自动布局世界中,我们不再设置框架,但是约束似乎不能将视图的位置调整回我们想要的位置.您可以破解约束以重新定位视图,但在轮换或其他调整大小事件时,这些会再次变为无效.

以下明智的想法不起作用,因为它创建了"无效的布局属性配对(左侧和宽度)":

layerView.layer.anchorPoint = CGPointMake(1.0, 0.5);
// Some other size-related constraints here which all work fine...
[self.view addConstraint:
    [NSLayoutConstraint constraintWithItem:layerView
                                 attribute:NSLayoutAttributeLeft
                                 relatedBy:NSLayoutRelationEqual 
                                    toItem:layerView 
                                 attribute:NSLayoutAttributeWidth 
                                multiplier:0.5 
                                  constant:20.0]];
Run Code Online (Sandbox Code Playgroud)

在这里我的目的是左边缘设置layerView,调整后的定位点来看,它的宽度加上20(我从上海华盈的左边缘要插入的距离)的一半.

是否可以在使用自动布局布局的视图中更改定位点而不更改视图的位置?我是否需要使用硬编码值并在每次旋转时编辑约束?我希望不是.

我需要更改锚点,以便在将变换应用于视图时,我获得正确的视觉效果.

calayer ios autolayout

159
推荐指数
3
解决办法
6万
查看次数

CGAffine转换并缩放到图像的中心

我开始使用Rory Lewis书中的Absolute BeginnersiPhone和iPad应用程序开始研究objective-c,但是我被困在第5章.

我想制作一个缩小图像的按钮.
我的问题是,在我写完所有代码后,图像缩小到UIImageView(左上角)的点(0,0),而在视频中,图像缩小到其中心.我做了一些研究,发现CGAffineTransform使用对象的中心进行翻译,旋转等.

那为什么它在我的情况下不起作用?

我有最新的Xcode版本并没有做任何奇怪的事情.我希望我已经清楚了.对不起我的英语不好.

编辑 对不起代码,但我从手机上写了这个问题.无论如何,有罪的部分都是这样的

- (IBAction)shrink:(id)sender {

if(hasShrink == NO){
    [shrinkButton setTitle:@"Grow" forState:UIControlStateNormal];
}
else if(hasShrink == YES){
    [shrinkButton setTitle:@"Shrink" forState:UIControlStateNormal];
}
        [UIView beginAnimations:nil context:nil];
        [UIView setAnimationDuration:1.0];
        myIcon.transform = CGAffineTransformMakeScale(.25, .25);
        hasShrink = YES;
        [UIView commitAnimations];
Run Code Online (Sandbox Code Playgroud)

}

所有的动画都是正确编写的,应用程序确实有效,它只是缩小到左上角.为什么默认情况下该点未设置为UIImageView的中心?

编辑: 我发现这是一个由AutoLayout引起的问题.一旦禁用,一切顺利;)

iphone scaling cgaffinetransform ios

9
推荐指数
3
解决办法
2万
查看次数

标签 统计

ios ×2

autolayout ×1

calayer ×1

cgaffinetransform ×1

iphone ×1

scaling ×1