我有一个UIView内部UIScrollView.每当UIScrollView变焦的变化,我想重绘整个UIView在新的缩放级别.
在iOS <3.2中,我通过调整UIView内部大小UIScrollView来使其成为新大小,然后将转换设置回Identity,以便它不会尝试进一步调整大小.但是,如果iOS> = 3.2,更改标识也会更改UIScrollView缩放比例属性.
结果是每当我缩放(比如说2x)时,我都会将嵌入器调整UIView为合适的大小,并重新绘制它.但是现在(因为我将转换重置为Identity),UIScrollView再次在zoomScale 1处思考它,而不是zoomScale 2.因此,如果我将maxZoomScale设置为2,它仍然会尝试进一步缩放,这是错误的.
我想过使用它CATiledLayer,但我不认为这对我来说已经足够了,因为我想在每次缩放后重绘,而不仅仅是像它试图做的某些缩放阈值.
有谁知道如何正确重绘UIView缩放?
我正在显示一个MFMailComposeViewController,如下所示:
- (IBAction) contactUs: (id) sender {
[Tracker trackContactUsPressed: [MFMailComposeViewController canSendMail]];
if ([MFMailComposeViewController canSendMail] == NO) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle: @"Email Error"
message: @"Email has not been configured on this device. Please send us an email at\nFOO@BAR.com"
delegate: self
cancelButtonTitle: @"OK"
otherButtonTitles: nil];
[alert show];
[alert release];
} else {
MFMailComposeViewController *controller = [[[MFMailComposeViewController alloc] init] autorelease];
[controller setSubject:@"Comments about FOO"];
[controller setToRecipients: [NSArray arrayWithObject: @"FOO@BAR.com"]];
[controller setMailComposeDelegate: self];
[[self parentViewController] presentModalViewController:controller animated:YES];
}
}
Run Code Online (Sandbox Code Playgroud)
然后我的代表看起来像这样:
- …Run Code Online (Sandbox Code Playgroud) 我有两个实体定义如下:
@Entity
@Table(name = "shapes")
public class Shape {
@Id
private int id;
@Column(nullable = false)
private String name;
@OneToMany(mappedBy="shape", fetch = FetchType.EAGER)
private List<ShapeElement> shapeElements;
public int getId() {
return id;
}
}
Run Code Online (Sandbox Code Playgroud)
和:
@Entity
@IdClass(ShapeElementPK.class)
@Table(name = "shape_elements")
public class ShapeElement {
@Id
@ManyToOne
@JoinColumn(name = "shape_id")
private Shape shape;
@Id
@Column(name = "x_delta")
private int xDelta;
@Id
@Column(name = "y_delta")
private int yDelta;
}
Run Code Online (Sandbox Code Playgroud)
使用以下 IdClass:
@Embeddable
public class ShapeElementPK implements Serializable {
private static final long …Run Code Online (Sandbox Code Playgroud)