标签: uiview

超越UIView界限的互动

当UIButton的帧位于其父级帧之外时,UIButton(或任何其他控件)是否可以接收触摸事件?因为当我尝试这个时,我的UIButton似乎无法接收任何事件.我该如何解决这个问题?

iphone cocoa objective-c uibutton uiview

85
推荐指数
7
解决办法
4万
查看次数

如何在iOS中将UIView转换为PDF?

关于如何在App中显示PDF有很多资源UIView.我现在正在做的是从中创建一个PDF UIViews.

例如,我有一个UIView,与像Textviews子视图,UILabels,UIImages,所以我怎么能转换成一个大的 UIView整体,包括其所有子视图和subsubviews到PDF?

我查看过Apple的iOS参考资料.但是,它只涉及将文本/图像片段写入PDF文件.

我面临的问题是我想以PDF格式写入文件的内容很多.如果我将它们逐个写入PDF,那将是一项巨大的工作.这就是我寻找写入UIViewsPDF甚至位图的方法的原因.

我已经尝试过在Stack Overflow中从其他Q/A复制的源代码.但它只给我一个带有UIView边界大小的空白PDF .

-(void)createPDFfromUIView:(UIView*)aView saveToDocumentsWithFileName:(NSString*)aFilename
{
    // Creates a mutable data object for updating with binary data, like a byte array
    NSMutableData *pdfData = [NSMutableData data];

    // Points the pdf converter to the mutable data object and to the UIView to be converted
    UIGraphicsBeginPDFContextToData(pdfData, aView.bounds, nil);
    UIGraphicsBeginPDFPage();

    // draws rect to the view and thus this is …
Run Code Online (Sandbox Code Playgroud)

pdf core-graphics uiview uiimage ios

85
推荐指数
5
解决办法
5万
查看次数

在UIView中画线

我需要在UIView中绘制一条水平线.什么是最简单的方法.例如,我想在y-coord = 200处绘制黑色水平线.

我不使用Interface Builder.

iphone uiview ios

84
推荐指数
6
解决办法
14万
查看次数

在2017年使用IBDesignable绘制虚线(不是虚线!)线

用UIKit 绘制虚线很容易.所以:

CGFloat dashes[] = {4, 2};
[path setLineDash:dashes count:2 phase:0];
[path stroke];
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

有没有办法画出真正的虚线?

在此输入图像描述

有任何想法吗?


由于这个问题很老,没有人提出完整的@IBDesignable解决方案,这里是...

希望能节省一些打字的人.

@IBDesignable class DottedVertical: UIView {

    @IBInspectable var dotColor: UIColor = UIColor.etc
    @IBInspectable var lowerHalfOnly: Bool = false

    override func draw(_ rect: CGRect) {

        // say you want 8 dots, with perfect fenceposting:
        let totalCount = 8 + 8 - 1
        let fullHeight = bounds.size.height
        let width = bounds.size.width
        let itemLength = fullHeight / CGFloat(totalCount)

        let path = UIBezierPath()

        let …
Run Code Online (Sandbox Code Playgroud)

uikit uiview ios swift

84
推荐指数
4
解决办法
4万
查看次数

控制器中的UIView触摸事件

如何以编程方式添加UIView touchbegin动作或touchend动作,因为Xcode不是从Main.storyboard提供的?

uiviewcontroller uiview ios swift

84
推荐指数
9
解决办法
12万
查看次数

UIView类中addSubview和insertSubview之间的区别

以编程方式添加视图时,addSubviewinsertSubView方法之间的区别是什么?

iphone subview uikit uiview addsubview

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

如何在iOS中的uiviewcontroller中列出所有子视图?

我想列出一个中的所有子视图UIViewController.我尝试过self.view.subviews,但并未列出所有子视图,例如,UITableViewCell未找到子视图.任何的想法?

subview uiview ios uiview-hierarchy

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

使用autolayout动态更改子视图后调整superview的大小

这个调整大小的超级视图的悬念我不能满足上帝的爱.

我有一个UIView *superview 4 UILabels.2用作另外2个的标题.

所有4个内容都来自数据库.

SizeToFitvs SizeThatFits:(CGSize)vs UIView systemLayoutSizeFittingSize:,传球UILayoutFittingCompressedSize或者UILayoutFittingExpandedSize.

我以编程方式使用autolayout并将superview高度设置为等于或大于虚拟数字.

我在哪里以及如何使用这些SizeToFitvs sizeThatFits:(CGSize)vs UIView systemLayoutSizeFittingSize:,传递UILayoutFittingCompressedSize或者UILayoutFittingExpandedSize.我已经在堆栈上阅读了很多提示但最终没有任何结果.

我是否需要在某处特定的情况下重新计算superview的约束.Maby在其控制器类中将高度设置为'@ property`并删除并读取它?Atm我试图将所有东西都放在一起然后放一些.我仍然得到相同大小的最终结果,虚拟高度和文字漂浮在外面.甚至在子视图上设置clipsToBound之后.

我正在抓我的头发..帮助

objective-c uiview autoresize ios autolayout

83
推荐指数
4
解决办法
7万
查看次数

UIGestureRecognizer阻止子视图处理触摸事件

我试图弄清楚这是如何以正确的方式完成.我试图描绘这种情况: 在此输入图像描述

我正在添加一个UITableView作为a的子视图UIView.在UIView一个分接开关和响应pinchGestureRecognizer,但这样做的情况下,实现代码如下停止反应,这两个手势(它仍然反应刷卡).

我已经使用以下代码,但它显然不是一个很好的解决方案,我相信有更好的方法.这是放在UIView(超级视图):

-(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
    if([super hitTest:point withEvent:event] == self) {
        for (id gesture in self.gestureRecognizers) {
            [gesture setEnabled:YES];
        }
        return self;
    }
    for (id gesture in self.gestureRecognizers) {
        [gesture setEnabled:NO];
    }
    return [self.subviews lastObject];
}
Run Code Online (Sandbox Code Playgroud)

objective-c uiview uiresponder uigesturerecognizer ios

82
推荐指数
4
解决办法
6万
查看次数

可以复制UIView吗?

只需使用这种方式:

UIView* view2 = [view1 copy]; // view1 existed
Run Code Online (Sandbox Code Playgroud)

这将导致模拟器无法启动此应用程序.

试试保留,

UIView* view2 = [view1 retain]; // view1 existed
// modify view2 frame etc
Run Code Online (Sandbox Code Playgroud)

任何修改view2都适用于view1,我明白view2共享相同的内存view1.

为什么不能UIView复制?是什么原因?

copy objective-c uiview ios

81
推荐指数
4
解决办法
4万
查看次数